Você está na página 1de 206

Apostila Microsoft SQL Server 7.

1 - Introduo
Viso geral do SQL Server Sistemas Gerenciadores de Bancos de Dados

Objetivos: - Obter uma viso geral do SQL Server e do seu funcionamento; - Conhecer as ferramentas do SQL Server; - Saber a diviso de papis entre o administrador do sistema e o implementador de bancos de dados.

Viso Geral do SQL Server


O SQL Server um sistema de gerenciamento de bancos de dados cliente/servidor de alto desempenho com alta integra o com o !indo"s #$. Suas caracter%sticas so& 'ntegra o com os servi os de multithreading (m)ltiplas linhas*+ agendamento+ ,onitor de -esempenho+ e log de eventos do !indo"s #$. .m usu/rio pode se conectar ao SQL Server com a mesma senha usada para a rede !indo"s #$. 0eplica o nativa permite disseminar informa 1es para v/rios locais+ redu2indo a depend3ncia de um servidor )nico+ e dei4ando a informa o necess/ria mais pr54ima de 6uem realmente precisa dela. 7r6uitetura paralela+ 6ue e4ecuta as fun 1es de banco de dados simultaneamente para diversos usu/rios e tira proveito de sistemas com m)ltiplos processadores. 8erenciamento centrali2ado de todos os servidores atravs de uma ar6uitetura de gerenciamento distribu%da+ com uma interface visual de gerenciamento.

Distributed Management Frame or! "DMF#


O SQL Server possui uma ar6uitetura distribu%da de gerenciamento (distributed management frame"or9*+ composta de ob:etos+ servi os e componentes. 7travs dela+ v/rios servidores podem ser gerenciados completamente a partir de 6ual6uer local na rede. ;ntre outros componentes+ essa ar6uitetura composta de& SQL-DMO& biblioteca de ob:etos 7ctive< 6ue e4p1e interfaces para todas as fun 1es de gerenciamento do SQL Server e pode ser usada em 6ual6uer linguagem compat%vel com automa o 7ctive<. =ermite gerenciar servidores+ bancos de dados+ tabelas e outros ob:etos relacionados ao banco de dados. SQL Enterprise Manager& ferramenta gr/fica de administra o 6ue+ utili2ando os ob:etos SQL--,O+ simplifica o gerenciamento de um ambiente de m)ltiplos servidores. Servios SQLServerAgent e MSSQLServer: e4ecutando no servidor #$+ o servi o SQLServer7gent permite agendar tarefas+ como bac9ups+ por e4emplo+ e definir alertas para informar 6uando ocorrem condi 1es de erro diversas. O servi o ,SSQLServer o componente central+ 6ue permite inserir+ atuali2ar e consultar dados arma2enados no SQL Server.

Apostila Microsoft SQL Server 7.0

Ferramentas de $dministrao
O SQL Server vem com v/rias ferramentas de administra o 6ue podem ser e4ecutadas a partir de um servidor !indo"s #$+ de uma esta o !indo"s #$ !or9station+ ou at mesmo a partir do !indo"s >?/>@. So elas& Enterprise Manager& como :/ foi dito+ gerencia v/rios servidores+ permitindo e4ecutar 6ual6uer tarefa relacionada ao SQL Server. Como ser/ visto adiante+ ele roda dentro ,,C A,icrosoft ,anagement ConsoleB. =ara e4ecut/-lo atravs de 'niciar+ ;4ecutar+ entre com a seguinte instru o& mmc /s Cpasta-baseDdoDSQLServerEF'##ESQL Server ;nterprise ,anager.,SCC+ substituindo pastabaseDdoDSQLServer pela pasta onde voc3 instalou o SQL Server G. =or padro+ C&E,SSQLG. Service Manager(SQLMA !"#E$E%& permite iniciar+ pausar+ continuar e parar ACfinali2arCB os servi os do SQL Server. Quer& Anal&'er((SQL)#E$E%: permite administrar diretamente o SQL Server usando comandos $ransactSQL. Os comandos SQL podem ser e4ecutados interativamente+ ou podem ser e4ecutados de procedimentos arma2enados ou scripts. *ro+iler (SQL,"A-E#E$E%: permite monitorar toda a atividade do servidor e registrar essa atividade em ar6uivos de log+ incluindo comandos SQL e4ecutados pelo servidor. -lient et.or/ 0tilit& -L(-O 1!#E$E%: configura o soft"are de acesso cliente numa esta o. *er+ormance Monitor (SQL-,"S#*M-: integra o =erformance ,onitor AC-esempenho do SistemaCB do !indo"s #$ com o SQL Server+ para monitorar o desempenho do sistema. Server et.or/ 0tilit& (S"2 E,- #E$E% & permite adicionar+ remover ou configurar as #et-libraries+ 6ue so os protocolos aceitos para comunica o do cliente com o servidor. SQL Server 3oo/s Online: toda a documenta o do SQL Server+ para consultar on-line. =ermite fa2er pes6uisas de te4to na documenta o. =ara e4ecut/-lo+ em 'niciar+ ;4ecutar+ entre com HH pastaDbaseDdoDSQLServerEFOOISESQLFOL.CH,+ onde pastaDbaseDdoDSQLServer o diret5rio onde o SQL Server foi instalado. =or padro+ C&E,SSQLG. 0ninstall SQL Server 4#5: permite 6ue voc3 remova a instala o e4istente do SQL Server G.J

Sistemas Gerenciadores de Banco de Dados


.m sistema gerenciador de banco de dados AS8F-B como o SQL Server respons/vel por arma2enar dados de forma confi/vel e permitir f/cil recupera o e atuali2a o desses dados. .m S8F- relacional arma2ena dados de forma relacional+ isto na forma de linhas e colunas.

Apostila Microsoft SQL Server 7.0

%onceitos &elacionais
.m registro (record* ou linha (ro"* um grupo de vari/veis com tipos de dados diferentes+ 6ue arma2enam dados relacionados. =or e4emplo+ um registro pode conter os dados relativos a um produto vendido pela empresa+ como descri o+ c5digo de identifica o+ 6uantidade em esto6ue. .m campo (field* ou coluna (column* um dos itens de informa o dentro de uma linha da tabela+ como a descri o da informa o. .ma ta6ela (table* um con:unto de linhas AregistrosB com a mesma estrutura+ arma2enados de forma permanente em disco.7s tabelas so compostas de linhasAro"B ou registros ArecordB e colunasAcolumnB ou fieldAcampoB. .m 6anco de dados (database* um con:unto de tabelas 6ue cont3m dados relacionados. =or e4emplo+ um sistema de contas a pagar poderia ter um banco de dados de contas a pagar+ com uma tabela para duplicatas+ uma tabela para bancos+ uma tabela para contas etc. .m 7ndice (inde4+ plural Kinde4esK ou KindicesK* um mecanismo 6ue permite pes6uisar rapidamente por linhas em uma tabela+ dado o valor de uma determinada coluna Aou algumas colunasB da tabela. .m 7ndice prim8rio ou chave prim8ria define um valor )nico+ 6ue no pode ser repetido em outras linhas da tabela. .ma consulta (6uerL* um pedido de pes6uisa no banco de dados+ 6ue permite obter todo um subcon:unto da tabela ou de v/rias tabelas+ especificando as condi 1es de sele o.

Des!to' ( %liente)Servidor
.ma aplica o 6ue utili2a bancos de dados composta de tr3s partes& (nter+ace com o usu8rio: respons/vel por validar as entradas do usu/rio+ e iniciar pes6uisas de acordo com um pedido do usu/rio. Mecanismo de acesso (database engine*: respons/vel pela manuten o das estruturas de dados necess/rias em ar6uivos+ pelos detalhes internos do acesso aos dados+ e pela manuten o da integridade dos dados. Arma'enamento de dados: ar6uivos 6ue contm os dados em si. .m banco de dados Cdes9topC Aou baseado em ar6uivosB a6uele no 6ual a interface com o usu/rio e o mecanismo de acesso ficam no mesmo computador Aa esta oB e apenas os ar6uivos de dados ficam num servidor de rede. Opera 1es de consulta ou pes6uisa devem passar atravs da rede. =or e4emplo+ 6uando um usu/rio 6uer ver uma rela o de contas a pagar+ mas apenas em determinado per%odo+ o sistema deve selecionar alguns registros baseado na data informada. #o ambiente des9top+ a esta o tra2 todos os registros atravs da rede+ mesmo os 6ue no so utili2ados. O tr/fego gerado na rede grande+ principalmente 6uando v/rias esta 1es acessam simultaneamente o servidor. M/ num banco de dados cliente/servidor+ a interface com o usu/rio fica na esta o e se comunica remotamente com o mecanismo de acesso+ 6ue um sistema gerenciador de 6anco de dados AS8F-B rodando no servidor. Quando o S8F- recebe um pedido para selecionar alguns dados+ ele acessa localmente os dados no servidor e retorna apenas o resultado pedido. #o caso de uma atuali2a o+ no necess/rio nem mesmo retornar um resultado+ apenas informar 6ue a atuali2a o foi feita. O diagrama abai4o resume as diferen as entre os ambientes& Des!to' cliente)servidor

Apostila Microsoft SQL Server 7.0

O SQL Server+ como :/ foi dito+ um sistema de gerenciamento de bancos de dados cliente/servidor.

* - Instalao e %on+igurao
&e,uisitos de -ard are e So+t are .'/es usadas na instalao Instalando o so+t are de servidor Veri+icando a instalao Instalando o so+t are de cliente &egistrando um servidor Soluo de 'roblemas de instalao &emovendo o SQL Server 012

Objetivos:

Apostila Microsoft SQL Server 7.0

- Saber o 6ue necess/rio para instalar o SQL Server em um computador; - 7prender a instalar o SQL Server em um servidor !indo"s #$ e a configurar as esta 1es de rede para utili2/-lo.

&e,uisitos de Sistema
7ntes de instalar o SQL Server+ preciso saber 6uais os re6uisitos m%nimos e recomendados para a instala o. -omputador& 'ntel e sistemas compat%veis+ ou -;C 7lpha e compat%veis& N recomend/vel 6ue todos os componentes de hard"are escolhidos este:am listados na HCL Alista de compatibilidade de hard"areB do !indo"s #$. Mem9ria& ,%nimo de OP ,b. 0ecomend/vel mem5ria adcional+ especialmente se o servidor :/ estiver processando outras fun 1es alm de banco de dados+ ou se forem usados bancos de dados grandes e replica o Sistema Operacional: O SQL Server pode ser instalado no !indo"s #$ Q.J ou superior+ com o Service =ac9 O ou posterior+ nas plataformas de hard"are citadas acima+ ou no !indo"s >4 Ano #$ ele roda como um servi o e no >4 como uma aplica oB. O soft"are de cliente+ para acesso ao SQL Server nas esta 1es+ pode ser instalado em !indo"s #$ Server+ !indo"s #$ !or9station+ !indo"s >?/>@+ ou !indo"s RS-bits AO.4B+ ,S-OS+ .#'<+ ,acintosh+ ou navegadores 'nternet. Espao em disco: #uma instala o m%nima+ so usados GJ ,F+ e numa instala o completa+ RSJ ,F+ incluindo todos ar6uivos de programas+ documenta o online+ ferramentas de desenvolvimento+ e ar6uivos de e4emplo. .ma instala o de um novo servidor+ s5 com as ferramentas de gerenciamento+ e4ige GJ ,F So+t.are de rede: #uma rede !indo"s #$+ o SQL Server usa o soft"are de rede integrado. #o necess/rio soft"are adicional+ e4ceto para conectar a alguns outros tipos de rede. #o caso da #ovell #et"are+ o suporte fornecido pelo protocolo #!Lin9 do !indo"s #$. #o recomendado instalar o SQL Server num computador 6ue se:a controlador prim/rio de dom%nio A=-CB ou controlador reserva AF-CB.

.utras considera/es
Sistemas de ar:uivos: o !indo"s #$ suporta T7$ ou #$TS. O SQL Server pode usar 6ual6uer um dos dois indiferentemente e o tipo de sistema usado no afeta seu desempenho Ae4ceto 6uando se usa compresso no #$TS+ 6ue redu2 o desempenhoB. 0ecomenda-se o #$TS para a instala o do servidor+ pelas suas vantagens de recupera o e seguran a.. ome do Servidor: o nome do computador usado para o SQL Server deve seguir certas regras& #omes no devem ter mais de RP@ caracteres. #omes no podem conter espa os. #omes devem come ar com uma letra Amai)scula ou min)sculaB ou sublinhado AKDKB. #omes tambm podem come ar com U ou V+ mas como nomes come ados por essas letras t3m um significado especial+ no sero usados na maioria dos casos. Caracteres no nome depois da primeira letra+ podem ser 6ual6uer letra+ n)mero+ ou os s%mbolos U+ D+ V+ ou W.

.'/es 3sadas na Instalao


In+ormao de &egistro
#essa fase+ informe seu nome+ nome da empresa e n)mero de identifica o do produto. 5

Apostila Microsoft SQL Server 7.0

4scol5a do ti'o da instalao


O SQL Server oferece tr3s tipos de instala o& $%pica A$LpicalB+ ,%nima A,inimalB+ e =ersonali2ada ACustomB. Instalao t6'ica 7utomaticamente instala o SQL Server e utilit/rios de cliente com as op 1es padro de instala o. So instalados& SQL Server+ Foo9 Online+ Quic9 $our+ e !hatKs #e". ;ssa o o e4ige cerca de RSO ,F de espa o em disco+ e no instala o soft"arede Tull $e4t Search+ as ferramentas de desenvolvimento ou os ar6uivos de e4emplo. Instalao %om'acta ;ssa op o instala o m%nimo de ar6uivos necess/rios para operar o SQL Server+ e usa todas as op 1es padro de instala o. .ma instala o compacta como uma instala o t%pica+ e4ceto 6ue as ferramentas de gerenciamento+ os livros on-line+ Quic9 $our e !hatKs #e" no so instalados. ;sta op o e4ige cerca de GQ ,F de espa o em disco. Instalao 7ersonali8ada ;ssa op o permite fa2er a escolha de 6uais componentes e4atamente sero instalados+ alm de permitir escolher muitas op 1es diferentes do SQL Server+ ao invs de apenas aceitar automaticamente as op 1es padro. Instalao remota N poss%vel instalar o SQL Server remotamente em outro computador. #esse caso+ voc3 pode informar o nome do computador e as locali2a 1es do !indo"s #$ e da unidade onde o SQL Server ser/ instalado.

Diret9rios
O SQL Server instalado por default no diret5rio C&E,SSQL+ mas isso pode ser alterado. O nome do diret5rio pode ser longo+ mas no deve conter espa os. -entro desse diret5rio+ todos os ar6uivos possuem nomes curtos AT7$ @.OB+ mesmo num drive 6ue suporta nomes longos. #essa apostila+ ao fa2ermos refer3ncia a -:;MSSQL+ note 6ue voc3 pode ter instalado em um diret5rio diferente. #esse caso+ substitua o nome pelo do seu diret5rio. O SQL cria os seguintes subdiret5rios durante a instala o& X F7CI.= - Contm ar6uivos de bac9up. X F'## - Contm ar6uivos e4ecut/veis das ferramentas de administra o do SQL e ar6uivos do Help Online+ e -LLs. X T$-7$7 - S5 instalado se o componente de procura por te4to completo (Tull-$e4t Search* tiver sido instalado. .tili2ada para lidar com ar6uivos de cat/logo somente de te4to. X -;Y$OOLS - ;ssa pasta+ e suas subpastas+ s5 so criadas+ se escolher-se instalar as ferramentas opcionais de desenvolvimento e e4emplos. X H$,L - 7rma2ena ar6uivos H$,L e ar6uivos relacionados. X -7$7 - Contm os ar6uivos de dados. X MOFS - 7rma2ena informa 1es sobre tarefas (Mobs* do SQL Server X '#S$7LL - Scripts de instala o e ar6uivos de sa%das. X LO8 - Contm ar6uivos de log de erro. X 0;=L-7$7 - -iret5rio de trabalho usado para replica o. X .=807-; - 7r6uivos do assistente de atuali2a o de verso. #o criada se voc3 no instalar o assistente de atuali2a o.

Apostila Microsoft SQL Server 7.0

%on:unto de caracteres; ordem de classi+icao; e com'arao 3nicode


O con<unto de caracteres (character set* usado determina os tipos de caractere 6ue o SQL reconhece nos seus dados e a ordem de classi+ica=o (sort order* determina como o SQL Server compara dados em forma de caractere e como eles so classificados. Yoc3 deve escolher essas op 1es durante a instala o. 7 )nica forma de alter/-las posteriormente reinstalando o SQL Server. Como geralmente so usadas aplica 1es !indo"s para acesso aos dados+ altamente recomend/vel usar o con:unto de caracteres 'SO @@?>-R ACode =age RP?PB+ tambm chamado Latin-R ou C7#S'C. ;sses caracteres so os mesmos usados no !indo"s. A;sse o con:unto de caracteres default durante a instala oB. ;4iste outros caracteres como& @?JAmultilingualB 6ue inclui todos os caracteres da ;uropa+7mrica do #orte e 7mrica do Sul + QOGA.S ;nglishB 6ue contm o alfabeto completo do ;stados .nidos+ >OPAMapaneseB contm o alfabeto completo do Mapo. 7 ordem de classifica o determina+ por e4emplo+ se o SQL Server considera ou no as letras acentuadas A + + B como diferentes dos caracteres no acentuados. =ara a l%ngua portuguesa+ recomend/vel usar a ordem C-ictionarL order+ case-insensitive+ accent-insensitiveC (ordem de dicion/rio+ insens%vel ao caso+ insens%vel a acentos*. -essa forma+ caracteres acentuados e no-acentuados so tratados da mesma forma+ como tambm letras mai)sculas e min)sculas. =or e4emplo+ ao pes6uisar CC7,707C no banco de dados+ CCZmaraC ser/ considerado igual. A,as KcK e K K+ ou KCK e K[K so diferentesB. ;4istem outras op 1es para ordem de classifica o como& -ictionarL order+case-insensitive (ordem de dicion/rio insens%vel ao caso* + neste caso as letras mai)sculas so tratadas da mesma forma 6ue as letras min)sculas+ mas os caracteres acentuados so tratados de forma diferente dos caracteres no acentuados Aessa a ordem de classifica o default durante a instala oB. O SQL Server tem a capacidade de arma2enar caracteres 7SC'' padro+ e caracteres .nicode. Os caracteres .nicode so capa2es de representar mais de SQJJJ caracteres diferentes.+ embora os caracteres 7SC'' se:am capa2es de representar apenas P?S caracteres. -epois de escolher o con:unto de caracteres e a ordem de classifica o+ voc3 deve escolher uma compara o .nicode (.nicode collation*+ 6ue funciona como uma ordem de classifica o para os caracteres .nicode arma2enados no SQL Server. .ma compara o .nicode consiste de um local e v/rios estilos de compara o. Locais+ normalmente nomeados de por pa%ses ou regi1es culturais+ ordenam caracteres de acordo com o padro na6uela /rea. O programa de instala o do SQL Server vai fornecer uma compara o .nicode padro+ com base no con:unto de caracteres e ordem de classifica o 6ue voc3 escolheu. N recomend/vel 6ue no se altere essa sele o+ pois caso ela se:a alterada+ a migra o de .nicode para no-.nicode torna-se mais dif%cil+ e dados .nicode e no-.nicode podem ser ordenados de maneiras diferentes.

7rotocolos de &ede
=ara cada tipo de cliente de rede+ o SQL Server possui uma et-li6rar&+ um driver 6ue suporta comunica o atravs desse tipo de rede. 7s op 1es dispon%veis so& amed *ipes ( et6eui%: Suporta o protocolo #etbeui. N instalado por default. Yoc3 no deve remov3-lo pois os utilit/rios do SQL Server depende desta #et-LibrarL. Multi-protocol: suporta a cone4o atravs de v/rios protocolos de rede+ suportando tambm seguran a integrada e criptografia Acaso a aplica o suporteB. )Lin/ (*$>S*$: comunica-se com clientes #et"are. O SQL Server pode se registrar como um servi o numa rede #et"are. ,-*>(* soc/ets: suporta comunica o atravs de !indo"s soc9ets+ por e4emplo+ com um cliente de 'nternet. 3an&an 2( ES? Apple,al/ ADS*? DE-net: outros tipos de rede.

Apostila Microsoft SQL Server 7.0

.'/es de auto-iniciali8ao
Servi o um programa e4ecut/vel 6ue no tem interface com o usu/rio+ mas tem formas de controlar. Como iniciar e parar o servi o determinado. -efinem se os servi os ,SSQLServer e SQLServer7gent iniciaro automaticamente com o !indo"s #$ ou sero iniciados manualmente. ;ssa op o pode ser alterada depois no =ainel de Controle (Control =anel* do !indo"s #$+ op o Servi os (Services*. =ara o servi o SQLServer7gent+ voc3 pode tambm definir 6ual o nome de usu/rio e senha 6ue ele utili2a para se conectar ao sistema.

Modo de licenciamento
O SQL Server pode ser licenciado por servidor (per server*+ onde para cada servidor ad6uire-se # licen as de acesso+ ou por esta=o (per seat*+ onde e4iste uma licen a para cada esta o+ independentemente do n)mero de servidores usados. -urante a instala o voc3 pode definir 6ual dos modos utili2ar. =ara alterar essas op 1es posteriormente+ use o %cone Licenciamento (Licensing* no =ainel de Controle do !indo"s #$.

Instalando o so+t are de servidor


%riando uma conta 'ara o SQLServer$gent
-urante a instala o+ S;$.= pede um nome de conta de usu/rio e a senha dessa conta+ para uso do servi o SQL;4ecutive. ;4istem duas maneiras de selecionar o usu/rio & Criar uma conta no !indo"s #$ . .tili2ar a conta Local SLstem do !indo"s #$. ,as nesse caso nem todos os recursos do SQL;4ecutive podem ser usados. =or e4emplo& 7o utili2ar Fac9ups poder/ no se ter acesso ao driver de destino do Fanco de -ados. N recomend/vel criar uma nova conta de usu/rio antes de instalar. ;ssa conta no deve ser usada por usu/rios para logar no computador. ;la ser/ e4clusiva para o SQL ;4ecutive. =ara isso+ abra o 8erenciador de .su/rios (.ser ,anager* do !indo"s #$+ no grupo/menu de programas Terramentas 7dministrativas (7dministrative $ools*. Cli6ue em 3su<rio=>ovo usu<rio111 (.ser\#e" user...*. 'nforme o nome de usu/rio CSQL;4ecutiveC Ao nome pode ser 6ual6uerB. 'nforme uma senha e anote-a para usar mais tarde com o S;$.=. -esmar6ue a op o CO usu/rio deve alterar a senha no pr54imo logonC ($he user must change pass"ord...* e mar6ue C7 senha nunca e4piraC (=ass"ord never e4pires*. -epois acrescente esse usu/rio ao grupo local C7dministradoresC (7dministrators*. .se o menu Diretivas= Direitos de usu<rio111 (=olicies\.ser rights* para conceder os direitos de CLogon como servi oC (Logon as a service*+ C7gir como parte do sistema operacionalC (7ct as part of the operating sLstem*+ C7umentar cotasC ('ncrease 6uotas*+ CSubstituir um to9en de n%vel de processoC (0eplace a process level to9en* ] conta KSQL;4ecutiveK . Como so direitos avan ados+ mar6ue a op o ;4ibir direitos avan ados do usu/rio (7dvanced .ser 0ights*.

Iniciando o S4?37
=ara instalar o SQL Server G+ efetue logon no !indo"s #$ com uma conta 6ue tenha privilgios administrativos+ colo6ue o C- de instala o na unidade de C- . ;m alguns segundos+ o programa de 'nstala o do SQL Server ir/ iniciar automaticamente e mostrar a tela abai4o& 8

Apostila Microsoft SQL Server 7.0

#essa tela voc3 tem diversas op 1es. =ara iniciar a instala o do SQL Server+ selecione C'nstall SQL Server G.J ComponentsC. 7 pr54ima tela permite 6ue se selecione 6uais componentes se 6uer instalar. >ota@ Se voc3 tiver a op o de auto0eprodu o do C- desativada+ voc3 pode iniciar manualmente o programa de instala o do SQL Server. =ara fa23-lo+ v/ para o diret5rio rai2 do C- de instala o do SQL Server+ e e4ecute o programa Csetup.batC. ;nto ser/ mostrada a tela acima. Se o SQL Server estiver sendo instalado de um compartilhamento da rede+ mude para a pasta do compartilhamento 6ue contem o SQL Server e e4ecute o ar6uivo Csetup.batC. >ota@ 7 op o C'nstall SQL Server =rere6uisitesC permite intalar os soft"ares necess/rios para se poder instalar o SQL Server. ;stes so o service pac9 Q do !indo"s #$ e o 'nternet ;4plorer Q.JR.

Install SQL Server 012 %om'onents

Apostila Microsoft SQL Server 7.0

#essa tela+ selecione C-atabase Server- Standard ;ditionC se voc3 6uiser instalar o SQL Server no !indo"s #$+ ou C-atabase Server- -es9top ;ditionC se voc3 6uiser instalar o SQL Server no "indo"s >4.

Select Install Met5od

Se voc3 6uisesse instalar em um computador remoto+ clicaria em C0emote 'nstallC e informaria as op 1es do computador remoto. #o nosso caso+ cli6ue em #e4t para fa2er a instala o local. 7%+ aparece a tela de boasa-vindas& 10

Apostila Microsoft SQL Server 7.0

Cli6ue em #e4t para continuar. 7parece a tela de C7cordo de Licen a de Soft"areC (Soft"are License 7greement*. Se voc3 aceita os termos do acordo+ cli6ue em ^es para continuar. Yoc3 deve selecionar ^es se voc3 6uer instalar o SQL Server. 7% aparece a tela de informa o do usu/rio. 76ui+ entre seu nome e o nome da companhia. -epois 6ue tiver entrado com essas informa 1es+ cli6ue em #e4t para continuar. 7 seguir ser/ pedido o n)mero de srie do SQL Server. ;ste pode ser encontrado no adesivo amarelo colado na cai4a do C-. -epois de entrar com esse n)mero+ cli6ue em #e4t para continuar.

Setu' ?A'e

11

Apostila Microsoft SQL Server 7.0

76ui+ voc3 deve selecionar se voc3 6uer fa2er uma instala o m%nima+ t%pica+ ou personali2ada. M/ discutimos sobre cada uma das op 1es anteriormente. 76ui+ usaremos a instala o personali2ada+ :/ 6ue ela fornece a maior fle4ibilidade 6uando instalano o SQL Server. Cli6ue no boto perto de CCustomC para escolher a instala o personali2ada. 7inda nesta :anela+ voc3 deve decidir onde arma2enar os ar6uivos de programa e de dados do SQL Server. =odem ser instalados no mesmo local+ ou em locais diferentes. .se os bot1es CFro"seC para selecionar outros locais 6ue no se:an os locais padro selecionados. .se as informa 1es de espa o e4igido (0e6uired* e dispon%vel (7vailable* para decidir melhor onde instalar os ar6uivos. Teitas as sele 1es+ cli6ue em #e4t para continuar.

Select %om'onents
12

Apostila Microsoft SQL Server 7.0

76ui+ voc3 deve escolher a6ueles componentes do SQL Server 6ue voc3 6uer carregar. =erceba 6ue no lado es6uerdo da tela esto os componentes+ e no lado direito os sub-componentes. =rimeiro+ voc3 seleciona um componente clicando dentro da cai4a de verifica o+ e se houver subcomponentes+ voc3 os escolhe clicando em cai4as de verifica o do lado direito. ;n6uanto voc3 escolhe os componentes para sua instala o+ perceba 6ue voc3 pode determinar o tamanho da instala o observando o espa o dispon%vel em disco na parte inferior da :anela. -epois de escolhido o 6ue for apropriado+ cli6ue em #e4t para continuar.

%5aracter Set) Sort .rder) 3nicode %ollation


76ui voc3 escolhe tanto o con:unto de caracteres (Character Set* 6uanto o ordem de classifica o (Sort Order* da cai4a de lista correspondente no topo da tela. Conforme :/ discutido+ recomenda-se dei4ar o padro para o CCharacter SetC e p_r a CSort OrderC como C-ictionarL order+ case-insensitive+ accent-insensitiveC. Como :/ citado+ a no ser 6ue voc3 tenhas uma ra2o realmente boa para mudar essa op o+ dei4e a op o padro selecionada. -epois de terminar as suas escolhas+ cli6ue em #e4t para continuar. %onsidera/es im'ortantes@ .m con:unto de caracteres pode ser modificado depois da instala o+ mas e4ige 6ue voc3 reconstrua todos seus bancos de dados e recarregue os dados Auma tarefa dispendiosa`B. $ambm recomend/vel 6ue todos as instala 1es do SQL Server 6ue precisem comunicar-se usem o mesmo con:unto de caracteres+e ordem de classifica o+ ou voc3 poder/ ter resultados inesperados.

>et or! Libraries

#essa :anela+ de sele o das bibliotecas de rede (#et"or9 Libraries*+ voc3 deve+ para cada biblioteca de rede 6ue for instalar+ entrar com alguns parZmetros adicionais+ como a porto em 6ue o servidor vai escutar+ para a biblioteca de rede $C=/'=+ e outras de acordo com a biblioteca de rede a ser instalada. Como :/ foi dito+ a 13

Apostila Microsoft SQL Server 7.0

biblioteca de rede #amed =ipes deve ser selecionada+ pois utili2ada durante a instala o. -epois da instala o conclu%da+ ela pode ser retirada+ apesar de no ser recomend/vel. #ormalmente+ as op 1es padro funcionam bem. -epois de feitas as sele 1es necess/rias+ cli6ue em #e4t para continuar. #ota& =ara mudar uma net-LibrarL depois da isntala o+ use o CSQL Server #et"or9 .tilitLC AS0Y#;$C#.;<;B

Services $ccounts

76ui voc3 pode usar a mesma conta para os dois servi os ASQLServer e SQLServer7gentB+ iniciando automaticamente o servi o SQL Server. =ara isso+ selecione o primeiro boto (.se the same account for....*. Caso voc3 6ueira usar uma conta diferente para cada servi o+ selecione CCustomi2e the settings for each serviceC e os bot1es SQL Server e SQL Server 7gent se tornaro ativos. 7% as op 1es do servi o (Service Settings* sero referentes ao servi o selecionado. Se foi criada a conta do usu/rio para uso do SQLServer7gent+ informe o nome do usu/rio+ a senha e confirme a senha Ao default o nome de usu/rio conectado atualmenteB. 'nforme tambm o dom%nio do #$ Server onde essa conta e4iste. Caso no tenha criado a conta mar6ue a op o 'nstall to log on as Local SLstem account A uma conta predefinida do !indo"s #$B. >ota@ Caso se escolha usar a conta de sistema local+ o SQL Server no ser/ capa2 de se comunicar com outros servidores. Cli6ue em #e4t para continuar. 7 seguir aparece a tela de sele o do modo de licenciamento (Choose Licensing ,ode*. ;scolha o licenciamento =er Server ou =er Seat+ levando em conta o 6ue foi discutido anteriormente. Cli6ue em #e4t para continuar.

14

Apostila Microsoft SQL Server 7.0

B%o'Aing FilesB e BS4?37 is111B

...
O S;$.= vai copiar os ar6uivos necess/rios para o diret5rio de instala o+ reinde4ar as tabelas de sistema+ e definir a configura o inicial do SQL Server. ;sse processo leva cerca de RJ-R? minutos+ dependendo da velocidade do seu computador. 7p5s esse processo+ o SQL Server ter/ sido instalado e estar/ pronto para usar. 7s ferramentas do SQL Server estaro dispon%veis no submenu C,icrosoft SQL Server G.JC+ dentro do menu 'niciar\=rogramas (Start\ =rograms* do !indo"s #$ Q.J. Yoc3 precisar/ de iniciar seus servi os antes de poder conectar-se pela primeira ve2 ao servidor SQL Server.

-epois 6ue o SQL Server estiver instalado+ h/ alguns passos a serem completados antes de se poder di2er 6ue o SQL Server est/ pronto para rodar. 7lguns desses passos devem ser e4ecutados apenas uma ve2 para se assegurar 6ue o SQL Server foi instalado corretamente e para prepar/-lo para rodar corretamente no futuro. 76ui vamos citar esses passos. Outros passos+ 6ue incluem configura 1es+ a:ustes e otimi2a o+ estabelecimento de '-s para login e '-s de usu/rios do banco de dados+ e claro+ a cria o de novos bancos de dados+ sero discutidos em outras se 1es. #esta se o o ob:etivo ser/ verificar se o SQL Server foi instalado corretamente.

Veri+icando se o SQL Server +oi instalado corretamente


-epois 6ue o SQL Server estiver instalado+ voc3 deve gastar alguns minutos para verificar 6ue o mesmo foi instalado e est/ rodando ade6uadamente. .se os passos abai4o para verificar a instala o.

Veri+i,ue se as 'astas de 'rogramas e dados +oram criadas


.se o #$ ;4plorer Aou !indo"s ;4plorerB para verificar 6ue os ar6uivos de programas do SQL Server e os ar6uivos de dados foram instalados nas pastas 6ue voc3 especificou durante o processo de instala o. Cada pasta deve conter pastas adicionais de acordo com o 6ue foi dito anteriormente Aem -iret5riosB. Yerifi6ue se todas as subpastas tanto nas pastas de programas 6uanto de ar6uivos e4istem. -eve-se verificar o conte)do da subpasta /data+ 6ue est/ abai4o da pasta de dados 6ue voc3 especificou. N a% 6ue o SQL Server cria e arma2ena v/rios bancos de dados padro e logs de transa 1es. 7 pasta /data deve se parecer com a figura abai4o. 15

Apostila Microsoft SQL Server 7.0

Os ar6uivos so& -istmdl.mdf e -istmdl.ldf Aapenas se obe:etos opcionais de replica o foream instalados. #orth"nd.mdf e #orth"nd.ldf ,aster.mdf e ,astlogldf ,odel.mdf e ,odellog.ldf ,sdbsdata.mdf e ,sdbblog.ldf =ubs.mdf e =ubsDlog.ldf $empdb.ldf e $emplog.ldf

Veri+icar ,ue todas as +erramentas de gerenciamento do SQL Server esto instaladas


Yerifi6ue se as ferramentas de gerenciamento do SQL Server 6ue voc3 especificou durante a instala o foram instaladas. O modo mais f/cil de fa2er isso clicando em 'niciar \ =rogramas \ ,icrosoft SQL Sever G.J. 7% voc3 ver/ um menu com a listagem de todos os programas+ utilit/rios e documenta o online 6ue voc3 especificou durante a instala o.

Veri+i,ue ,ue os servios do SQL Server esto carregados e e(ecutando


Quando voc3 instalou o SQL Server+ seus dois servi os principais - SQLServer7gent e ,SSQLServer - foram instalados e configurados para iniciar automaticamente Aassumindo 6ue voc3 6uis iniciali2a o autom/ticaB. Quando o SQL Server instalado pela primeira ve2+ os dois servi os no so iniciados automaticamente at 6ue o #$ Server se:a reiniciado. >ota@ Ye:a mais sobre os servi os na se o do Service ,anager.

16

Apostila Microsoft SQL Server 7.0

%on+erindo se os dois servios +oram instalados; e manualmente iniciando-os 'ela 'rimeira ve8 R. 7bra o =ainel de Controle do #$+ e ento d3 um duplo cli6ue no %cone Servi os. 7parece ento a cai4a de di/logo de Servi os. P. =ercorra a lista de servi os at 6ue voc3 ve:a pela primeira ve2 o servi o ,SSQLServer. Se voc3 no reiniciali2ou o computador desde 6ue instalou o SQL Server+ ele deve ter um ;stado (Status* em branco. ; em 'niciali2a o (Startup*+ deve estar configurado como autom/tico. O. =ara iniciar manualmente o servi o+ cli6ue nele uma ve2 para 6ue o mesmo fi6ue selecionado+ e ento cli6ue no boto 'niciar (Start*. -epois de uns OJ segundos+ o ;stado (Status* vai mudar para 'niciado (Started* e o servi o est/ agora sendo e4ecutado. Q. =ercorra a lista um pouco mais at 6ue voc3 ve:a o servi o SQLServer7gent+ e ele tambm deve estar com o ;stado em branco e a 'niciali2a o como 7utom/tica. ?. =ara inici/-lo manualmente+ fa a da mesma maneira 6ue foi feito com o servi o ,SSQLServer+ mas agora selecionando o servi o SQLServer7gent. -epois de uns R? segundos+ o ;stado (Status* vai mudar para 'niciado (Started* e o servi o est/ agora sendo e4ecutado. S. Se tudo estiver correto+ feche a cai4a de di/logo de Servi os e o =ainel de Controle. ; se os servi os no estiverem a%a Se os servi os no estiverem listados+ sua instala o do SQL Server falhou e voc3 vai ter 6ue reinstal/-lo+ mas isso raro. Yoc3 pode ter notado 6ue na coluna 'niciali2a o (Startup*+ estava a a palavra ,anual+ ao invs de 7utom/tico. Se voc3 se vir nessa situa o+ voc3 provavelmente es6ueceu de escolher a op o auto-iniciar (7uto-start* 6uando voc3 instalou o SQL Server. N bem f/cil corrigir isso.

17

Apostila Microsoft SQL Server 7.0

4scol5endo auto-iniciar

R. .m de cada ve2+ selecione cada um dos servi os do SQL Server na cai4a de di/logo de Servi os e
P. O. Q. ?. cli6ue no boto 'niciali2a o (Startup*. 'sso mostra a :anela abai4o. #essa :anela+ selecione 7utom/tico como o tipo de 'niciali2a o (Startup tLpe*. Cli6ue em OI+ e voc3 retornar/ para a cai4a de di/logo de Servi os. 0epita os passos R a O para o outro servi o do SQL Server. O )ltimo passo iniciar manualmente os servi os como descrito anteriormente. Se os servi os no iniciarem conforme descrito+ e se voc3 receber uma mensagem de erro+ ve:a a solu o de problemas de instala o para tentar resolver o problema.

Veri+i,ue ,ue vocC consegue se logar no SQL Server


7 )ltima maneira de verificar 6ue o SQL Server foi instalado corretamente tentar se logar e e4ecutar uma pe6uena consulta. Se voc3 puder e4ecutar essas duas tarefas com sucesso+ voc3 saber/ 6ue o SQL Server foi instalado sem problemas. 76ui vamos demonstrar como se logar ao servidor usando a ferramenta 'SQL+ 6ue o programa baseado em linha de comando fornecido com o SQL Server+ utili2ado para e4ecutar comandos $ransact-SQL. ;mbora ha:a outros programas ou utilit/rios do SQL Server 6ue voc3 poderia usar ao invs do 'SQL+ ele recomendado para este teste por6ue h/ menos coisas para dar errado 6uando da e4ecu o do teste. 4(ecute e se logue ao ISQL; e rode uma 'e,uena consulta 'ara veri+icar ,ue o SQL Server +oi instalado corretamente1 R. Y/ para o prompt de comando do #$. P. #o prompt de comando+ escreva o seguinte e pressione ;nter&
is6l /.sa /=

O. Se tudo estiver funcionando corretamente+ o prompt do 'SQL dever/ aparecer ao invs do prompt de comando. ;le se parece com isso&
Rb

Q. ;screva a seguinte consulta para testar se o SQL Server vai responder. =ressione ;nter depois de cada linha.
select UUservername go

18

Apostila Microsoft SQL Server 7.0

?. 7ssumindo 6ue tudo este:a funcionando+ o nome do seu servidor deve ser mostrado no prompt do 'SQL. 7 resposta deve se parecer Ao n)mero e nome do servidor vai variarB com isso&
=-C AR ro" affectedB Rb

S. =ara sair do programa 'SQL+ digite e(it no prompt do 'SQL e pressione ;nter+ e voc3 retornar/ para o prompt de comando do #$. Se tudo tiver ocorrido como descrito+ voc3 sabe 6ue o SQL Server foi instalado corretamente e est/ funcionando ade6uadamente. Se voc3 encontrar problemas ou mensagens de erro+ ve:a a solu o de problemas de instala o para tentar resolver o problema.

Instalando o so+t are de cliente


Quando voc3 :/ tiver instalado o SQL Server+ hora de pensar em instalar as ferramentas de gerenciamento nas esta 1es de trabalho 6ue iro ser utili2adas para administrar remotamente o SQL Server. $ambm pode ser interessante instalar as ferramentas de gerenciamento nas esta 1es de trabalho dos desenvolvedores. 7s ferramentas de gerenciameno so as mesmas 6ue voc3 teve a chance de instalar 6uando da instala o do SQL Server Aafinal+ mesmo na m/6uina onde o servidor est/ instalado+ vocv3 precisa de soft"are de cliente para conectar ao servidorB. 7 vantagem de instalar as ferramentas de gerenciamento em outras m/6uinas 6ue voc3 pode gerenciar remotamente o SQL Server de virtualmente todos computadores+ no apenas do servidor f%sico em 6ue o SQL Server est/ sendo e4ecutado. 7s ferramentas de gerenciamento do SQL Server podem ser instaladas no #$ Server+ #$ !or9station+ e !indo"s >4. 7o contr/rio de algumas das ferramentas de gerenciamento inclu%das no SQL Server S.?+ as ferramentas de gerenciamento do sQL Server G.J no podem ser e4ecutadas sob o !indo"s O.4 ou -OS. 76ui descreveremos as ferramentas de gerenciamento+ como instalar e utili2/-las. $odas as ferramentas de cliente a6ui descritas so as mesmas descritas em Terramentas de gerenciamento+ mas algumas delas+ especificamente o Service ,anager e o Server #et"or9 .tilitL s5 so instaladas no servidor. Onde se vir escrito CTerramentas de gerenciamentoC nesta se o+ subentende-se 6ue se est/ citando as ferramentas de cliente A6ue nada mais so do 6ue as ferramentas de gerenciamento instaladas em um clienteB. >ota@ Qual6uer das ferramentas de gerenciamento s5 podem ser utili2adas por um usu/rio 6ue tenha as permiss1es necess/rias para tal tarefa.

Ferramentas de cliente
O SQL Server inclui uma por o de ferramentas de administra o para serem instaladas no cliente+ 6ue podem ser usadas para gerenciar o SQL Server. -urante o processo de instala o+ voc3 pode instalar 6uantas ferramentas de gerenciamento voc3 achar necess/rio. O SQL Server oferece estas op 1es& SQL Server 4nter'rise Manager@ Se voc3 6uer administrar remotamente o SQL Server+ ento a instala o do ;nterprise ,anager necess/ria. ;ste programa permite ao -F7 e4ecutar virtualmente 6ual6uer tarefa administrativa no SQL Server. SQL Server 7ro+iler@ ;sta ferramenta usada para monitorar e registrar a atividade dos bancos de dados entre o SQL Server e os clientes. 7penas instale esta ferramenta nas m/6uinas 6ue e4ecutaro esta tarefa. SQL Server QuerA $nalA8er@ ;sta ferramenta utili2ada para enviar manualmente comandos $ransact-SQL e procedimentos arma2enados para o mecanismo de banco de dados do SQL Server. Yoc3 provavelmente instalar/ esta ferramenta na maioria+ talve2 em todas as m/6uinas de gerenciamento remoto. %lient Diagnostic 3tilities@ ;sta ferramenta utili2ada para verificar 6ual -F-LibrarL est/ instalad em um cliente+ e para configurar as ferramentas de gerenciamento para se comunicar com o SQL Server em uma rede. 19

MS D?% %lient Su''ort@ 7 ferramenta de Coordena o de $ransa 1es -istribu%das A-$CB da ,icrosoft fornece suporte aos clientes -$C. 7penas necessita ser instalada em clientes 6ue e4ecutem uma aplica o do SQL Server 6ue e4igam o -$C. Develo'ment +iles@ ;sses ar6uivos so necess/rios para desenvolvedores OL;--F para a cria o de programas utili2ando O-FC+ -F-LibrarL+ O-S+ SQL--,O+ ;mbedded SQL for C+ e ,S -$C. 8eralmente+ apenas desenvolvedores SQL Server precisaro desses ar6uivos. Sam'le +iles@ ;stes ar6uivos so ar6uivos de e4emplo feitos para os desenvolvedores analisarem e aprenderem com eles. 7ssim como os ar6uivos de desnvolvimento+ apenas desenvolvedores precisaro deles. &e'lication %on+lict &esolution ?ool@ .tili2ada para a:udar a resolver conflitos de replica o entre dois servidores SQL Server. Yoc3 apenas precisa desta ferramenta se voc3 implementar replica o em seus servidores. Livros online@ ;sta uma documenta o completa e comprensiva do SQL Server+ e interessante instal/-la em todo cliente. Ocupa cerca de R? ,F de espa o no disco+ mas vale a pena. Se voc3 no 6uiser ocupar todo esse espa o em um cliente+ voc3 tambm pode instalar os livros online em um compartilhamento de rede+ e ento conectar a ele 6uando necess/rio. Yoc3 tambm tem a op o de e4ecut/-lo a partir de um drive de C- instalado localmente. #o importa 6uais das op 1es acima voc3 decidir instalar+ as seguintes ferramentas e ar6uivos so instalados automaticamente. eles incluem bcp+ is6l+ os6l+ O-FC+ e -F-LibrarL. Talaremos deles mais tarde.

Apostila Microsoft SQL Server 7.0

So+t are e -ard are necess<rio 'ara a instalao do so+t are de cliente
%73@ #o m%nimo um 7lpha 7<= ou um 'ntel de OP bits A@JQ@SB. 0ecomenda-se um =entium PJJ ou mais velo2. &$M@ #o m%nimo OP ,F. 0ecomenda-se OP ,F no !indo"s >4+ e SQ ,F ou mais no !indo"s #$. Monitor e 'laca de v6deo@ Qual6uer placa de v%deo 6ue este:a instalada corretamente funcionar/. 0ecomenda-se pelo menos um monitor de R?C com resolu o de RJPQ4GS@. 4s'ao em disco@ GO ,F para a instala o de todas as ferramentas de gerenciamento. Como provavelmente no sero instaladas todas elas+ pode ser suficiente menos espa o. Drive de %D-&.M@ 7penas e4igido se a instala o estiver sendo feita a partir de um C-. 7laca de rede& Qual6uer placa de rede 6ue funcione no sistema operacional ser/ aceita. 0ecomendase uma placa de RJ ou RJJ ,bits se voc3 estiver acessando um ou mais servidores SQL Server pesadamente a partir da esta o trabalho. Sistema o'eracional@ #o m%nimo #$ Server ou !or9station Q.J Acom Service =ac9 OB+ ou !indo"s >4. 0ecomenda-se usar sempre o Service =ac9 mais recente em 6ual6uer desses sistemas.

De onde instalar as +erramentas de gerenciamento


7s ferramentas de gerenciamento do SQL Server podem ser instaladas a partir dos seguintes locais. %D de instalao do SQL Server@ 7s ferramentas de grenciamento podem ser instaladas diretamente do C- e4ecutando-se o programa de instala o do SQL Server. ;ste o mesmo programa utili2ado para instalar o SQL Server. %om'artil5amento de rede& O meio mais fle4%vel de se instalar as ferramentas de gerenciamento instal/-las a partir de um compartilhamento na sua rede. O processo de instala o se inicia 6uando se e4ecuta o ar6uivo setup.bat+ o mesmo utili2ado para instalar o SQL Server. Se voc3 pretende isntalar diversas c5pias das ferramentas de administra o em v/rias m/6uinas+ este o meio mais eficiente.

20

Apostila Microsoft SQL Server 7.0

%omo instalar as +erramentas de gerenciamento


7 instala o das ferramentas de gerenciamento do SQL Server um processo simples+ #a verdade+ os passos e4igidos para a instala o das ferramentas de gerenciamento so praticamente os mesmos necess/rios para instalar o SQL Server. 'sso significa 6ue voc3 :/ conhece o processo. 7bai4o listam-se os passos necess/rios para a instala o das ferramentas de gerenciamento do SQL Server em um cliente. R. Se voc3 estiver instalando as ferramentas de cliente no !indo"s #$+ voc3 deve efetuar logon com uma conta 6ue tenha privilgios administrativos. Se voc3 estiver instalando-as no !indo"s >4+ voc3 pode efetuar logon com 6ual6uer conta de usu/rio. P. Certifi6ue-se de 6ue no h/ nenhum outro programa sendo e4ecutado+ antes de iniciar o processo de instala o. Se houver+ feche-os antes de continuar. Confirme tambm se h/ alguma verso antiga das ferramentas de gerenciamento instaladas na m/6uina. Se houver+ remova-as antes de instalar a nova verso.

O. Se voc3 estiver fa2endo a instala o a partir de um C-+ apenas insira o C- do SQL Server no drive de C-. ;m alguns segundos+ a tela do programa de instala o do SQL Server vai surgir automaticamente. Caso voc3 no este:a instalando de um C-+ e4ecute o ar6uivo setu'1bat do compartilhamento de rede onde esto os ar6uivos de instala o. 7parece a tela abai4o.

#esta tela+ voc3 tem uma por o de op 1es. Selecione 'nstall SQL Server G.J Components. Q. #a pr54ima tela+ escolha -atabase Server- -es9top ;dition. ?. -epois voc3 deve escolher se vai fa2er uma instala o para a m/6uina local ou para uma m/6uina remota. Supondo 6ue voc3 este:a instalando as ferramentas de gerenciamento estando fisicamente na m/6uina em 6ue elas sero e4ecutadas+ escolha Local 'nstall.

21

Apostila Microsoft SQL Server 7.0

S. -epois de passar por estas telas introdut5rias+ aparece a primeira tela da instala o do SQL Server. G. O programa de instala o um assistente 6ue te encaminha pelo processo de instala o. ;mbora o processo se:a o mesmo 6ue o da instala o do SQL Server+ voc3 no repetir/ e4atamente os mesmos passos. 76ui+ voc3 6uer instalar apenas as ferramentas de gerenciamento. Cli6ue em #e4t para continuar. @. 7parece a tela do acordo de licen a de soft"are. Cli6ue em ^es para continuar. >. 7gora+ voc3 deve digitar seu nome e o nome da sua organi2a o+ e a seguir o n)mero de srie do produto. Cli6ue em #e4t para continuar. RJ. 7gora+ aparece a tela de tipo da instala o (Setup $Lpe*.

22

Apostila Microsoft SQL Server 7.0

RR. =ara instalar apenas as ferramentas administrativas+ escolha Custom e cli6ue em #e4t. 7ntes de prosseguir+ verifi6ue se as pastas escolhidas esto corretas+ e se voc3 tem espa o em disco suficiente.Se no+ mude as pastas ou discos+ clicando no boto Fro"se. RP. #a tela de sele o de componentes+ voc3 deve selecionar os componentes 6ue voc3 dese:a instalar e desmarcar os 6ue voc3 no instalar/.

8eralmente+ voc3 desmarcar/ Server Components Aafinal+ voc3 s5 6uer as ferramentas de administra o+ e no o SQL ServerB. Selecione Client ConnectivitL+ e ,anagement $ools. -o lado direito da tela+ voc3 pode desmarcar componentes individuais das mesmas. -epois 6ue voc3 escolher o 6ue achar ade6uado+ cli6ue em #e4t para continuar.

23

Apostila Microsoft SQL Server 7.0

RO. Tinalmente+ a instala o vai come ar. Lhe mostrada a tela final+ onde voc3 pode conferir as op 1es 6ue voc3 selecionou. Se estiver satisfeito com as sele 1es feitas+ cli6ue em #e4t para come ar a instala o. Caso contr/rio+ cli6ue em Fac9+ e altere o 6ue achar necess/rio. -epois 6ue voc3 clica em #e4t+ os ar6uivos so copiados para seu computador. Quando o processo de instala o finali2ar+ voc3 volta apara a primeira tela do programa de instala o. =ara sair dessa tela+ cli6ue em ;4it. Quando as ferramentas de gerenciamento :/ estivrem instaladas+ voc3 pode testar se a instala o foi bemsucedida. Ye:a+ se em 'niciar \ =rogramas \ ,icrosoft SQL Server G.J+ as ferramentas 6ue voc3 selecionou tem seus atalhos. =ara verificar se as ferramentas funcionam+ escolha alguma e a e4ecute+ vendo se voc3 pode se conectar a um servidor remoto. Claro+ para 6ue este teste funcione+ voc3 deve ter uma conta legal e as permiss1es necess/rias no servidor SQL Server. Se voc3 puder fa2er uma cone4o com o servidor SQL Server+ voc3 confirma 6ue as ferramentas foram instaladas com sucesso. #a maioria dos casso+ assim 6ue as ferramentas de gerenciamento forem instaladas+ voc3 ser/ capa2 de us/las imediatamente sem 6ual6uer configura o adicional. ,as se a sua rede no for uma rede ,icrosoft pura+ ento voc3 pode ter 6ue mudar algumas op 1es de configura o usando a ferramenta de configura o de clientes (Client #et"or9 .tilitL*. Ye:a na se o Client #et"or9 .tilitL como utili2ar essa ferramenta.

&egistrando um servidor
Quando voc3 tiver certe2a 6ue o SQL Server est/ instalado e voc3 pode se conectar a ele Aconfira em verificando se voc3 pode se logar no SQL ServerB+ a pr54ima etapa se registrar com o SQL ;nterprise ,anager. ;nterprise ,anager o principal programa usado para gerenciar o SQL Server Ave:a mais sobre o SQL ;nterprise ,anagerB. ;le tem a capacidade de no apenas gerenciar um servidor SQL Server local+ mas tambm servidores m)ltiplos conectados em 6ual6uer lugar na mesm rede f%sica. ,as antes de tornar o SQL ;nterprise ,anager capa2 de fa2er isso+ voc3 deve lhe contar sobre os diversos servidores SQL Server 6ue voc3 possa ter+ e isso feito atravs do processo de registrar-se. Quando um servidor SQL Server est/ registrado com uma c5pia do ;nterprise ,anager+ essa c5pia do SQL ;nterprise ,anager capa2 de gerenciar a6uele servidor SQL Server+ no importando onde ele este:a na ree. >ota@ =or padro+ para administrar um servidor+ voc3 deve ser membro do grupo local 7dministradores no computador onde o SQL Server foi instalado. 7dministradores de dom%nio do !indo"s #$ so membros do grupo local 7dministradores. O registro um processo 6ue precisa ser feito apenas uma ve2+ embora voc3 possa desresgistrar e registrar novamente 6ueal servidor SQL Server 6uantas ve2es voc3 6uiser. 7s informa 1es de registro do SQL Server so mantidas no registro do !indo"s #$. O ;nterprise ,anager usa essa informa o a cada ve2 6ue voc3 se conecta com um servidor SQL Server registrado. H/ duas maneiras de registar um servidor SQL Server usando o ;nterprise ,anager& manualmente+ ou com o 7ssitente de 0egistro (0egistration !i2ard*. 76ui olharemos os dois mtodos+ come ando pelo 7ssistente de 0egistro. >ota& -iversas c5pias do ;nterprise ,anager podem estar distribu%das em diversos computadores ao longo da empresa. 'sso pode fa2er com 6ue se:a necess/rio voc3 registrar diversas ve2es oAsB servidorAesB 6ue voc3 6uer administrar. 'sso ocorre pois o registro feito com o ;nterprise ,anager e portanto+ em cada c5pia do ;nterprise ,anager devem ser registrados os servidores 6ue se dese:a administrar.

&egistrando um servidor utili8ando o &egistration Di8ard


7ntes de tentar resgistrar um servidor SQL Server com o SQL ;nterprise ,anager+ confirme 6ue o SQL Server est/ instalado e rodando ade6uadamente Aver em verificando a instala oB. Se ele no estiver instalado e rodando corretamente+ voc3 no ser/ capa2 de registr/-lo com o SQL ;nterprise ,anager. 24

Apostila Microsoft SQL Server 7.0

&egistrando um servidor SQL Server com o SQL 4nter'rise Manager 'ela 'rimeira ve81

R. 7 partir do 8rupo de programas do ,icrosoft SQL Server A'niciar \ =rogramas \ ,icrosoft SQL Server G.J \ ;nterprise ,anagerB+ e4ecute o SQL Server ;ntreprise ,anager. 'sso inicia o ,icrosoft ,anagement Console A,,CB. P. 7gora voc3 est/ pronto para iniciar o assistnte de registro (0egistration !i2ard*. =ara inici/-lo+ cli6ue com o boto direito em ,icrosoft SQL Servers+ 6ue aparece abai4o de Console 0oot. 7parecem ento diversas op 1es+ e voc3 6uer registrar um servidor (#e" SQL Server 0egistration...*

25

Apostila Microsoft SQL Server 7.0

O. -epois de escolher a op o #e" SQL Server 0egistration+ aparece a primeira tela do 7ssistente de 0egistro (0egistration !i2ard*. Cli6ue em #e4t para continuar.

4. 7 seguir+ o assistente te pde para selecionar 6ual servidor SQL Server 6ue voc3 6uer registrar+ como
na figura abai4o& Os servidores SQL Server dispon%veis aparecem no lado es6uerdo da tela. Se o seu servidor no estiver sendo mostrado+ talve2 ele no tenha sido instalado ade6uadamente+ ou os dois servi os do SQL Server podem no estar iniciados Aver em verificando a instala o se eles esto iniciadosB. Supondo 6ue seu servidor este:a listado Alocal o servidor SQL Server localB+ cli6ue no servidor 6ue voc3 6uer registrar e cli6ue em 7dd. 'sso move o servidor SQL Server para o lado direito da :anela+ embai4o de Servidores 7dicionados (7dded Servers*. Yoc3 pode registrar mais de um servidor de uma ve2 se voc3 6uiser. ?. -epois 6ue voc3 tiver adicionado os servidores SQL Server dese:ados+ cli6ue em #e4t+ e vai aparecer uma :anela perguntando a voc3 6ual op o de cone4o 6ue voc3 6uer utili2ar para se conectar ao SQL Server. Yoc3 tem duas op 1es& autentica o do !indo"s #$ ou autentica o do SQL Server. Se esta a primeira instala o do SQL Server na sua organi2a o+ escolha por agora autentica o do SQL Server; isso pode ser mudado mais tarde se voc3 mudar seu modo de seguran a. ,as se no for a primeira instala o do SQL Servre+ escolha o modo de seguran a 6ue os outros servidores SQL Server estiverem utili2ando. O e4emplo a seguir sup1e 6ue voc3 tenha escolhido a autentica o do SQL Server (SQL Server authentication*. -epois de feita sua escolha+ cli6ue em #e4t. S. 7 seguir+ o assistente 6uer 6ue voc3 escolha se o SQL ;nterprise ,anager se lembre do seu nome de login e senha.

7 primeira op o+ C;fetuar logon automaticamente usando minha informa o de conta do SQL ServerC (Login 7utomaticallL .sing ,L SQL Server 7ccount 'nformation*+ pode ser escolhida para 6ue o ;nterprise ,anager se lembre de sua senha e nome de login. 7ssim+ voc3 no precisa de+ a cada ve2 6ue iniciar o 26

Apostila Microsoft SQL Server 7.0

;nterprise ,anager+ ficar digitando essa informa o novamente. Se voc3 no 6uiser 6ue o ;nterprise ,anager lembre-se de seu login e senha+ escolha a op o C=erguntar a informa o da conta do SQL Server 6uando se conectarC (=rompt for the SQL Server account information "hen connecting*. Se voc3 escolher a primeira op o+ digite S7 como nome de login+ e dei4e a senha (=ass"ord* em branco. Yoc3 deve usar esse nome de login e senha 6uando registra pela primeira ve2 um novo servidor SQL Server po6ue voc3 ainda no atribuiu ] conta S7 uma senha+ nem criou 6ual6uer outro nome de login. Cli6ue em #e4t para continuar. G. Yoc3 deve adicionar um servidor SQL Server a um grupo de servidores.

#essa tela+ voc3 pode adicionar ao grupo padro SQL Server 8roup+ ou a um outro grupo pree4istente Aselecionando a primeira op oB. Yoc3 pode ainda criar um novo grupo Aselecionando a segunda op o (Create a ne" top-level SQL Server group to add the SQL ServerAsB to.*B+ e seu servidor ser/ adicionado a esse grupo. 8rupos de servidores so usados para agrupar servidores SQL Server de usos semelhantes+ para fins de aministra o+ e so completamente opcionais. $udo 6ue os grupos de servidores fa2em agrupar grupos de servidores semelhantes para visuali2a o no ;nterprise ,anager. ;scolha a op o mais ade6uada e cli6ue em #e4t para continuar. @. O assitente de registro mostra sua )ltima tela. Se voc3 6uiser fa2er 6uais6uer mudan as+ voc3 pode fa23-las clicando no boto Fac9. Ou+ se tudo

estiver conforme voc3 6ueria+ cli6ue em Tinish para concluir. 7 cai4a de di/logo de registro do SQL Server aparece+ e voc3 recebe uma mensagem di2endo se o registro foi bem-sucedido. Se voc3 receber uma mensagm de erro+ ve:a a se o de solu o de problemas.

27

Apostila Microsoft SQL Server 7.0

>. Cli6ue em Close+ e volta-se para o SQL ;ntrprise ,anager. ;mbai4o de Console 0oot+ voc3 ver/ o cabe alho ,icrosoft SQL Servers. Cli6ue no sinal de mais perto deste cabe alho+ e um ou mais grupos de servidores sero mostrados. OAsB servidorAesB 6ue voc3 acabou de registrar aparecero dentro do grupo 6ue voc3 definiu para eleAsB. Supondo 6ue voc3 no tenha criado nenhum grupo e tenha adicionado-os ao grupo padro+ o )nico grupo listado ser/ o padro SQL Server 8roup. =ara ver o servidor 6ue voc3 acabou de registrar+ cli6ue no sinal de mais perto do grupo de servidores em 6ue voc3 adicionou oAsB servidorAesB. Se o servidor no aparecer dentro de nenhum grupo de servidores+ ele no foi registrado corretamente com o ;nterprise ,anager.

&egistrando um servidor manualmente


Se voc3 no 6uiser usar o 7ssistente de 0egistro+ voc3 no precisa. 0egistrando um servidor manualmente com o ;nterprise ,anager

28

Apostila Microsoft SQL Server 7.0

R. O primeiro passo desligar o 7ssistente de registro. -epois 6ue ele estiver desligado+ ento dessa ve2 em diante+ voc3 ser/ capa2 de registrar manualmente 6ual6uer servidor com o ;nterprise ,anager. =ara desligar o assistente de registro+ voc3 deve primeiro inici/-lo clicando com o boto direito no te4to ,icrosoft SQL Server+ ou em 6ual6uer grupo de servidores+ ou em 6ual6uer servidor registrado+ e ento selecionar a op o #ovo registro de servidor (#e" SQL Server 0egistration*. 'sso mostra a primeira tela do 7ssistente de registro. P. =ara deslig/-lo+ selecione a op o C7 partir de agora eu 6uero reali2ar essa tarefa sem usar um assistenteC (Trom no" on ' "ant to perform this tas9 "ithout using a "i2ard*. Cli6ue em #e4t e na outra :anela em Cancel. 'sso fechar/ o assistente de registro e tambm o impedir/ de ser e4ecutado a cada ve2 6ue voc3 for registrar um servidor. O. 7gora+ para regsitrar um servidor manualmente+ cli6ue com o boto direito no te4to ,icrosoft SQL Server+ ou em 6ual6uer grupo de servidores+ ou em 6ual6uer servidor registrado+ e ento selecionar a op o #ovo registro de servidor (#e" SQL Server 0egistration*. 'sso mostra a cai4a de di/logo C=ropriedades do servidor SQL registradoC (0egistered SQL Server =roperties*

29

Apostila Microsoft SQL Server 7.0

Q. Complete essa :anela usando o mesmo tipo de informa 1es 6ue foram descritas 6uando descrevemos o 7ssistente de registro. .ma diferen a entre o 7ssistente de registro e essa cai4a de di/logo so as tr3s op 1es na parte de bai4o da :anela. -isplaL SQL Server State in console - ;sta op o+ se selecionada+ fa2 com 6ue o ;ntrprise ,anager regularmente interrogue o servi o ,SSQLServer para saber se ele est/ rodando+ e mostra uma lu2 verde no %cone no console 6uando ele est/ rodando+ e uma lu2 vermelha se o servi o no estiver sendo e4ecutado. Sho" SLstem -atabases and SLstem Ob:ects - Se esta op o for escolhida+ todos os bancos de dados e ob:etos do sistema sero mostrados no console. Caso no se:a escolhida+ os mesmos no aparecem no console. 7utomaicallL Start SQL Server "hen connecting - 7ssumindo 6ue o servi o ,SSQLServer no este:a a:ustado para iniciar automaticamente+ esta op o pode ser usada para iniciar automaticamente este servi o 6uando da primeira cone4o com o servidor. =or padro+ as tr3s op 1es esto escolhidas agora+ e so escolhidas automaticamente 6uando se usa o assistente de registro. Yoc3 pode fa2er 6ual6uer escolha 6ue achar ade6uada. Quando voc3 tiver completado suas escolhas+ voc3 pode registrar o servidor clicando em OI.

%omo editar as in+orma/es de registro do servidor SQL Server


cs ve2es+ voc3 pode precisar de editar as configura 1es de registro do SQL Server+ como 6uando voc3 mudar o login ou a senha 6ue voc3 usou originalmente para registrar o servidor. Fa8endo mudanas em um servidor registrado R. #o ;nterprise ,anager+ selecione o servidor cu:o registro voc3 6uer alterar.

30

Apostila Microsoft SQL Server 7.0

P. Cli6ue com o boto direito no nome do servidor e ento escolha ;dit SQL Server 0egistration no menu. 'sso mostra a cai4a de di/logo 0egistered SQL Server =roperties+ 6ue foi mostrada na figura acima. O. Ta a 6uais6uer mudan as necess/rias. Quando terminar+ cli6ue em OI para salvar essas configura 1es e voltar para o ;nterprise ,anager

%omo cancelar o registro de um servidor


-e tempos em tempos+ pode ser necess/rio cancelar o registro de um servidor+ no ;nterprise ,anager. =ara isso+ fa a& R. #o ;nterprise ,anager+ selecione o nome do servidor cu:o registro voc3 6uer cancelado. P. Cli6ue com o boto direito em seu nome+ e selecione -elete do menu. O. .ma cai4a de confirma o aparece+ pedindo-lhe para clicar em ^es para remover o servidor+ ou #o para cancelar a opera o. Cli6ue em ^es para cancelar o registro do servidor.

Gerenciando gru'os de servidores


;mbora voc3 possa criar novos grupos a partir do assistente de registro+ ou a partir da cai4a de di/logo 0egistered SQL Server =roperties+ voc3 tambm pode crirar+ renomear e e4cluir grupos de servidores manualmente. Yoc3 tambm pode mudar um servidor de um grupo para outro se voc3 6uiser. =ara gerenciar os grupos de servidores+ fa a o seguinte& R. 7 partir do ;nterprise ,anager+ cli6ue no sinal de mais perto do cabe alho ,icrosoft SQL Servers.

'sso mostra todos os grupos de servidores atualmente embai4o dele. Cli6ue com o boto direito no nome ,icrosoft SQL Server+ ou em 6ual6uer grupo de servidores+ e ento selecione #ovo grupo de servidores (#e" SQL Server 8roup* do menu. 7parece a cai4a de di/logo de 8rupos de Servidores. P. =ara criar um novo grupo de servidores+ entre com o nome do novo grupo na cai4a #ame e cli6ue em OI. 'sso far/ esse grupo automaticamente um grupo de servidores do n%vel mais alto. Se voc3 6uiser+ voc3 pode escolher criar um grupo como subgrupo de algum outro grupo+ escolhendo a op o CSubgrupo deC (Sub-group of&*. #a maioria dos casos+ grupos de servidores do mais alto n%vel so mais do 6ue suficientes. O. Se voc3 6uiser remover um grupo de servidores+ cli6ue com o boto direito no nome do grupo de servidores 6ue voc3 6uer remover+ e ento selecione -elete do menu. O grupo removido imediatamente sem nenhum aviso. 31

Apostila Microsoft SQL Server 7.0

$tribuindo uma sen5a ao $dministrador do Sistema "S$#


Se voc3 estiver usando o mtodo de autentica o do #$+ voc3 no precisa e4ecutar este passo por6ue no se e4ige 6ue voc3 efetue logon no servidor SQL Server diretamente usando um nome de login (login '-*. ,as se voc3 estiver usando o mtodo de autentica o do SQL Server+ uma das primeiras coisas 6ue voc3 vai 6uerer fa2er definir uma senha para a conta S7. O S7 tem a capacidade de e4ecutar 6ual6uer fun o no SQL Server+ e voc3 deve evitar 6ue usu/rios no autori2ados efetuem logon no servidor SQL Server. Colocando uma senha para a conta S7 R. -o ;nterprise ,anager+ abra a pasta 6ue representa o servidor SQL Server+ cu:a senha do S7 precisa ser alterada. P. 7bra a pasta SecuritL (Seguran a*+ e cli6ue uma ve2 em Logins+ e ento no lado direito da :anela+ os logins atualmente dispon%veis so e4ibidos.

O. Cli6ue com o boto direito no nome de login S7+ e selecione =ropriedades (=roperties* no menu; a cai4a de di/logo =ropriedades aparece. Q. =ara adicionar uma senha paa a conta S7+ digite-a na cai4a identificada por =ass"ord. Yoc3 vai notar 6ue a cai4a da senha est/ preenchida com asteriscos. 'sso no significa nada+ :/ 6ue atualmente no h/ senha para o login S7. ;scolha uma senha 6ue no se:a f/cil de adivinhar. 5. -epois 6ue voc3 tiver colocado uma senha+ cli6ue em OI. 'sso salvar/ a senha e fechar/ a cai4a de di/logo. 7gora voc3 precisa de voltar ao registro desse servidor e edit/-lo para indicar a nova senha da conta S7. Apara editar o registro do servidor+ fa a como indicado em 0egistrando um servidor manualmenteB O restante desta tela de =ropriedades ser/ visto no decorrer do curso. 7gora+ o SQL Server est/ funcionando e pronto para ser configurado para 6ual6uer aplica o na 6ual ele este:a sendo utili2ado.

32

Apostila Microsoft SQL Server 7.0

Soluo de 'roblemas de instalao


Se voc3 seguiu corretamente os avisos e instru 1es at a6ui+ voc3 no deve encontrar problemas na instala o do SQL Server. Quase todos os prbblemas 6ue voc3 encontrar so por6ue voc3 dei4ou passar uma etapa+ ou cometeu algum engano durante o processo de instala o. 76ui+ vamos comentar alguns prblemas comuns de instala o e como corrig%-los.

%omo identi+icar 'roblemas na instalao do SQL Server


H/ muitas maneiras de identificar 6ue sua instala o do SQL Server falhou. ;ntre eles& ,ensagens de erro. 7 resposta mais comum 6ue o SQL Server te fornece so mensagens de erro. ;mbora as mensagens 6ue voc3 receba possam no ser sempre precisas+ a primeira suposi o 6ue se deve fa2er 6uando receber uma mensagem de erro 6ue ela precisa e 6ue voc3 precisa encontrar a causa dela. 7lgumas mensagens so 5bvias+ :/ outras so bem obscuras. Se voc3 no puder determinar a partir da pr5pria mensagem+ 6ual o problema+ escreva a mensagem por inteiro e procure nos livros on-line do SQL Server ASQL Server boo9s on-lineB. Se l/ voc3 no encontrar a mensagem+ tente olhar na ,icrosoft $ech#et Avoc3 tem 6ue ser um assinante para receb3-laB ou no site da ,icrosoft na 'nternet. Se voc3 no encontrar a mensagem de erro+ voc3 pode checar o Yisuali2ador de ;ventos (;vent Yie"er* do !indo"s #$+ no log de aplicativo+ para alguma mensagem relacionada. Yoc3 ainda pode ver os logs de erro do SQL Server+ se houver algum+ para pistas. Os logs de erro do SQL Server esto locali2ados na pasta Elog abai4o da pasta onde o SQL Server foi instalado. ;ncontre o ar6uivo chamado ;rrorlog e abra-o com o #otepad ou !ordpad. H/ tambm o ar6uivo S6lstp.log+ nas pasta C&E!'##$+ 6ue lhe d/ informa 1es sobre o processo de instala o do SQL Server. $odos os logs de erros so ar6uivos 7SC'' e podem ser facilmente visuali2ados com 6ual6uer editor de te4tos+ Os logs de erros do SQL Server so dif%cieis de interpretar+ mas podem te dar uma dica do 6ue aconteceu. #o foi poss%vel verificar a instala o. Se voc3 tentou verificar a instala o como descrito em Yerificando a instala o+ e o problema parece ser algo faltando da instala o 6ue deveria estar a%+ voc3 tem duas op 1es. Ou e4ecute o programa de instala o novamente sobre a instala o atual+ ou voc3 pode primeiro e4cluir a instala o danificada+ e ento reinstalar. Yerificar o ar6uivo Cnfgsvr.out. ;sse ar6uivo+ locali2ado na pasta E'#S$7LL+ abai4o da pasta onde o SQL Server foi instalado+ um ar6uivo de sa%da gerado pelos scripts 6ue rodam durante a instala o e grava mensaegns de erro -FCC. 7 seguir so descritos alguns dos problemas mais comuns 6ue so encontrados 6uando da instala o do SQL Server.

3so da verso errada do >? Server


O uso da verso errada do #$ Server+ ou o uso de um Service =ac9 antigo+ pode causar uma grande variedade de prblemas+ muito deles dif%ceis de diagnosticar. Se a instala o produ2 mensagens de erro obscuras sem ra2o aparente+ assegure-se de 6ue a verso do #$ Server 6ue voc3 est/ usando se:a ade6uada. Se voc3 descobrir 6ue tem a verso errada+ desinstale o SQL Server+ atuali2e o #$ Server para uma verso aceit/vel+ e ento reinstale o SQL Server.

$r,uivos abertos durante a instalao


-urante o processo de instala o+ o SQL Server substitui alguns ar6uivos do #$ Server. Se algum desses ar6uivos estiver aberto durante a instala o+ eles podem causar a e4ibi o de uma mensagem de erro cr%tico. ;ssa a ra2o de ser importante cetificar-se de 6ue no h/ nenhum outro programa rodando 6uando o SQL Server for instalado. Se voc3 descobrir 6ue tem um ou mais utilit/rios do #$ aberto 6ue pode estar causando 33

Apostila Microsoft SQL Server 7.0

o erro+ feche-os+ e cli6ue no boto de 0etrL mostrado pela mensagem de erro. Se isso no funcionar+ voc3 pode ter 6ue abortar a instala o do SQL Server e tentar de novo+ desta ve2 sem nenhum programa rodando.

.s servios MSSQLServer ou SQLServer$gent no iniciam


;ste provavelmente o problema mais comum encontrado 6uando se instala o SQL Server. Siga os passos abai4o para te a:udar a determinar a poss%vel causa desse problema& Yoc3 criou uma conta de servi o como descrito na instala o do soft"are de servidora 7 conta de servi o foi criada ade6uadamente+ com direitos administrativos e os outros direitos avan ados e4igidosa 7 conta de servi o foi criada no dom%nio de contas correto do #$a 7 conta de servi o foi informada corretamente 6uando pedida durante o processo de instala oa Yoc3 usou acidentalmente sua conta de logon on #$ como a conta de servi oa Yoc3 digitou tudo corretamentea Se voc3 no conseguir descobrir o problema+ delete a conta de servi o 6ue voc3 criou e crie uma nova+ seguindo cuidadosamente as recomenda 1es da instala o do soft"are de servidor. ;nto v/ para o =ainel de Controle+ onde esto os servi os+ e asegure-se de 6ue voc3 selecionou a conta de serv o para os dois servi os+ :unto com as senhas corretas. Com fre6u3ncia+ esse um erro simples 6ue facilmente corrigido.

E - Ferramentas de gerenciamento do SQL Server


MM% - Microso+t Management %onsole 4nter'rise Manager Service Manager %lient >et or! 3tilitA Server >et or! 3tilitA 7er+ormance Monitor 7o+iler QuerA $nalA8er Boo!s online $ssistentes do SQL Server

Objetivos: - Conhecer os conceitos de aloca o de espa o usados pelo SQL Server; - $er uma viso geral dos itens 6ue comp1em o cat/logo do sistema; - Saber o 6ue um banco de dados e o 6ue ele contm; - 7prender a criar+ usar e gerenciar dispositivos de banco de dados.

34

Apostila Microsoft SQL Server 7.0

SQL Server 4nter'rise Manager


O CSQL Server ;nterprise ,anagerC a porta de entrada para a 'nterface de usu/rio do SQL Server. =ara inici/-lo+ selecione 'niciar+ =rogramas+ ,icrosoft SQL Server G.J+ ;nterprise ,anager. 7parece o ;nterprise ,anager dentro do ,,C+ como abai4o.

35

Apostila Microsoft SQL Server 7.0

7% temos uma por o de menus e bot1es. Os itens de menu importantes so 7ction+ Yie" e $ools& 7ction te permite fa2er coisas tais como registrar um novo servidor ou um novo grupo Aconforme visto na se o de instala oB. Yie"s te fornece uma lista dos diferentes tipos de vis1es dispon%veis para voc3. Yoc3 pode selecionar as vis1es grande+ pe6ueno+ detalhe ou lista dos %cones e suas propriedades associadas. 7inda poss%vel definir 6uais itens e 6uais barras de ferramentas voc3 ver/. ;4atamente como no !indo"s ;4plorer. O menu $ools lista todas as ferramentas e assistentes do SQL Server. Yoc3 pode fa2er bac9up de um banco de dados; parar+ iniciar e configurar a replica o; e iniciar ferramentas como o QuerL 7nalL2er A7nalisador de consultasB+ entre outras. 'mediatamente ] direita dos menus h/ outros itens de barras de ferramentas. ;stes so basicamente atalhos para os itens mais usados da barra de menu. $emos+ entre outros& 7nterior =r54imo

7tuali2ar

0egistrar Servidor

#ovo Fanco de -ados

#ovo Login

QuerA Designer
O SQL Server G.J tem uma ferramenta muito )til+ 6ue se parece com o QuerL FL ;4ample AQF;B do ,icrosoft 7ccess+ e um 5timo substituto para a ,S QuerL Ado SQL Server S.?B. O nome dessa aplica o QuerL -esigner e fa2 parte das Terramentas Yisuais de Fanco de -ados. N uma 5tima ferramenta+ mas no est/ listada como uma ferramenta do SQL Server+ e um pouco dif%cil ach/-la diretamente. =ara locali2/-la+ fa a assim& -o ;nterprise ,anager+ e4panda o banco de dados #orth"ind+ e e4panda as tabelas. Cli6ue com o boto direito na tabela Categories. Selecione Open $able+ e ento 0eturn 7ll 0o"s. 36

Apostila Microsoft SQL Server 7.0

>ota@ O 6ue foi citado acima para a tabela Categories+ do banco de dados #orth"ind+ aplica-se a 6ual6uer tabela+ de 6ual6uer banco de dados+ assim como no necess/rio selecionar 0eturn 7ll 0o"s. =oderia ter sido selecionado 0eturn $op... 6ue te perguntaria 6uantos registros voc3 6uer ver. 7 diferen a no comando SQL gerado para cada uma das sele 1es. -epois 6ue voc3 abrir a tabela+ toda a :anela estar/ envolvida com o QuerL -esigner. ;le permite 6ue voc3 ve:a propriedades da consulta+ e4ecute consultas de sele o+ de a o Ainser o+ atuali2a o+ e4cluso+ e cria o de tabelasB+ valida o da sinta4e SQL+ ordena o+ filtragem+ e agrupamentos. =rovavelmente+ estaremos vendo a se o dos 0esultados A0esults =aneB+ acionada com o boto + 6ue mostra os resultados atuais da consulta. =orm+ ainda h/ outras tr3s se 1es para se escolher ou adicionar ] :anela atual. ;stas so+ Sho" -iagram+ Sho" 8rid+ e Sho" SQL =ane. ;las so selecionadas pelos bot1es no topo da :anela. S5o Diagram 7ane ;sta se o te permite visuali2ar graficamente o banco de dados ou as tabelas. =or padro+ s5 a tabela atual

6ue estiver aberta ser/ mostrada nesta se o. =ara adicionar outr tabela+ simplesmente cli6ue com o boto direito em 6ual6uer lugar da se ao Ae4ceto na representa o gr/fica de alguma tabelaB. 7parece um menu com algumas op 1es.

37

Apostila Microsoft SQL Server 7.0

Selecione 7dd $able. 'sso mostrar/ todas as tabelas e vis1es Avie"sB dispon%veis no seu banco de dados+ conforme abai4o.

7dicione a tabela =roducts Asupondo 6ue voc3 seguiu o e4emplo acima e est/ vendo as tabelas do banco de dados #orth"indB+ selecionando-a e clicando em 7dd+ ou dando um duplo cli6ue no nome da tabela . #ote 6ue o relacionamento tambm representado graficamente com uma linha e chave em uma ponta e um %cone de infinito na outra ponta.

'sso mostra um relacionamento de um para muitosAR&#B com CategorL'- na tabela Categories como a chave prim/ria. =ode-se selecionar para a consulta+ colunas individuais ou todas as colunas marcando as cai4as de verifica o apropriadas perto do nome de cada coluna. S5o Grid 7ane ;sta se o permite detalhar mais a consulta sendo criada. =or e4emplo+ podemos selecionar a ordem para uma coluna particular+ seu alias Anome 6ue ser/ mostrado no gridB. $udo isso de uma maneira visual. S5o SQL 7ane ;sta se o mostra a declara o SQL gerada pelas sele 1es feitas nas se 1es acima. =ode-se agora copiar e colar c5digo desta :anela+ para o QuerL 7nalL2er+ pra um ambiente de programa o+ entre outros. >ota@ 7 se o de resultados A0esults =aneB no se atuali2a automaticamente. =ara atuali2/-la+ cli6ue no ponto de e4clama o vermelho A0unB 38

Apostila Microsoft SQL Server 7.0

#o QuerL -esigner+ podemos criar consultas comple4as muito mais rapidamente 6ue no QuerL 7nalLser A6ue ser/ visto adianteB. -epois de criarmos as consultas+ podemos coloc/-las no QuerL 7nalL2er e testar sua performance.

SQL Server %lient >et or! 3tilitA


7 ferramenta SQL Server Client Configuration utili2ada para configurar as ferramentas de gerenciamento+ de modo 6ue elas possam comunicar-se com sucesso com um servidor SQL Server. 7 ferramenta SQL Server Client Configuration .tilitL est/ locali2ada no grupo de programas do SQL Server G.J A'niciar \ =rogramas \ ,icrosoft SQL Server G.J \ Client #et"or9 .tilitL. ;ssa ferramenta chamada de -lient -on+igruation 0tilit& e de et.or/ -on+iguration nos livros on-line. #a maioria das situa 1es+ voc3 no precisar/ de e4ecutar este programa por6ue as configura 1es padro 6ue foram utili2adas durante a instala o vo funcionar na maioria das configura 1es de esta 1es de trabalho. ,as se voc3 descobrir 6ue as suas ferramentas de cliente no conseguem se comunicar com o servidor SQL Server+ voc3 pdoe utili2ar esse utilit/rio para configurar ade6uadamente o cliente de modo 6ue ele possa comunicar-se com o servidor SQL Server.

Iniciando a %lient >et or! 3tilitA


=rovavelmente+ esta ferramenta foi instalada 6uando voc3 instalou as outras ferramentas de gerenciamento em uma esta o de trabalho. Se voc3 no instalou esta ferramenta+ voc3 deve instal/-la seguindo os passos descritos em 'nstalando as ferramentas de cliente. .ma ve2 6ue a Client #eto"r9 .tilitL este:a instalada+ e4ecute-a seguindo os passos abai4o& R. ;fetue lgon na esta o de trabalho usando uma conta com as permiss1es ade6uadas. P. =ara e4ecutar a Client #et"or9 .tilitL+ cli6ue em 'niciar \ =rogramas \ ,icrosoft SQL Server G.J \ Client #et"or9 .tilitL.

O. 7parece a :anela da Client #et"or9 .tilitL.

39

Apostila Microsoft SQL Server 7.0

Q. ;ssa ferramenta inclui tr3s guias 6ue separam cada uma das tr3s op 1es principais. ;las so 8eneral+ #eto"r9-Libraries+ e -F-LibrarL Options. 7 seguir descreveremos cada uma delas.

Geral
7 guia geral Afigura acimaB tem duas se 1es. #a parte superior da tela voc3 pode especificar 6ual #et-LibrarL voc3 6uer usar como o protocolo padro de rede para este cliente. 7 segunda parte da tela utili2ada para especificar configura 1es opcionais do protocolo de rede/ Como voc3 deve se lembrar+ 6uando o SQL Server foi instalado+ voc3 teve 6ue especificar uma ou mais #etLibraries para serem instaladas. ;ste o soft"are utili2ado para estabelecer uma cone4o de rede entre o servidor SQL Server e o soft"are de cliente. O SQL Server usa as bibliotecas de rede (#et-Libraries* para se comunicar com um protocolo de rede espec%fico e enviar pacotes atravs da rede entre um cliente e um servidor. O servidor escuta simultaneamente em diversas portas+ en6uanto o cliente se comunica com o servidor usando uma #et-LibrarL espec%fica. =ara 6ue um cliente se conecte a um servidor+ ele deve usar alguma das #et-Libraries 6ue o servidor tem instaladas. Yoc3 pode fa2er com 6ue cliente e servidor usem a mesma #et-LibrarL de duas maneiras& adicionar no cliente+ uma #et-LibrarL 6ue est/ instalada no servidor; ou o contr/rio& no cliente+ instalar uma #et-LibrarL 6ue este:a instalada no servidor. #ormlamente+ mais f/cil adicionar a #et-LibrarL ao servidor+ do 6ue aos clientes. 7 configura o de uma #et-LibrarL no cliente+ para se comunicar com um servidor+ opcional. =or padro+ #amed =ipes a #et-LibrarL dos clientes+ instalada durante a instala o do SQL Server para computadores e4ecutando !indo"s #$ ou !indo"s >4. #amed =ipes deve funcionar bem na maioria dos casos. ,as+ se esse protocolo no conectar-se com seu servidor+ voc3 vai precisar de reconfigurar o cliente com a configura o correta. ;nto+ caso voc3 precise mudar o protocolo de rede para uma esta o de trabalho AclienteB+ voc3 pode fa2er isso selecionando o protocolo apropriado da lista =rotocolo de rede padro (-efault net"or9 =rotocol*. 7 #et-LibrarL de cliente padro para os clientes SQL Server fa2endo cone41es remotas #amed =ipes+ a 6ual no suportada em servidores rodando !indo"s >4. Clientes conectando-se com servidores rodando !indo"s >4 devem usar a ferramenta SQL Server Client #et"or9 .tilitL para e4ecutar uma das seguintes op 1es& 40

,udar a #et-LibrarL padro do cliente. -efinir uma entrada de configura o para uma #et-LibrarL de cliente na 6ual o servidor rodando !indo"s >4 este:a escutando. 7 parte de configura o do protocolo de rede da guia 8eral (8eneral* s5 usada em casos especiais. Yoc3 s5 vai utili2/-la se se ver em uma das seguintes situa 1es& 7s ferramentas de gerenciamento esro em uma esta o de trabalho rodando !indo"s #$+ conectando-se a um servidor e4ecutando !indo"s >?. Yoc3 precisa adicionar uma configura o e4clusiva de protocolo para as comunica 1es entre um servidor SQL Server espec%fico e um cliente e4ecutando as ferramentas de gerenciamento. O servidor SQL Server com o 6ual voc3 6uer se comunicar a partir de um cliente escuta em uma oprta no-padro. #ormalmente+ voc3 no usar/ esta op o. >ota@ =ara o processo Servidor+ o SQL Server escuta as #et-Libraries #amed =ipes+ soc9ets $C=/'=+ e ,utliprotocolo em computadores rodando !indo"s #$. ;ntretanto+ #amed =ipes no aceito em commputadores rodando !indo"s >4. O SQL Server instalado em computadores rodando !indo"s >4 escuta as #et-Libraries soc9ets $C=/'= e ,utliprotocolo do servidor. Se a cone4o local com o servidor Atal como um cliente e servidor na mesma m/6uinaB+ o SQL Server vai escutar ento a #et-LibrarL de ,em5ria Compartilhada do servidor.

Apostila Microsoft SQL Server 7.0

>et or! Libaries


7 guia #et"or9 Libraries usada somente para mostrar 6uais #et"or9 Libraries esto atualmente instaladas no cliente e permitir 6ue voc3 saiba suas vers1es. ;ssa guia se parece com a figura abai4o.

41

Apostila Microsoft SQL Server 7.0

DB-LibrarA .'tions
O principal ob:etivo da guia -F-LibrareL lhe permitir determinar se voc3 tem ou no a verso mais atual dos ar6uivos de -F-LibrarL instalados no cliente. Outra parte da guia -F-LibrarL Options formada pelas duas cai4as de verifica o 6ue podem ser usadas para configurar como a -F-LibrarL se comunica com o SQL Server. ;is o 6ue elas fa2em& 7utomatic 7#S' to O;,& Quando esta op o estiver selecionada+ a -F-LibrarL converte caracateres do formato O;, para 7#S' 6uando ocorre a comunica o do cliente para o servidor SQL Server+ e converte caracteres do formato 7#S' para O;, 6uando se comunica do servidor para o cliente. ;sta op o e4igida fre6uentemente poru6e o con:unto de caracteres utili2ado pelo SQL Server diferente da6uele utili2ado pelo sistema operacional do cliente. ;sta op o fa2 automaticamente a tradu o ade6uada entre os dois con:untos de caracteres. ;ssa op o deve estar selecionada se o cliente estiver e4ecutando !indo"s #$ ou !indo"s >4. Se estiver sendo utili2ado um cliente !indo"s O.4+ esta op o no deve ser selecionada. .se 'nternational Settings& Quando esta op o estiver selecionada+ permite-se 6ue a -F-LibrarL pegue as configura 1es de formato de data+ hora e moeda do sistema operacional local ao invs de utili2ar a configura o definida no c5digo do SQL Server. ;sta op o deve ser selecionada se o cliente estiver sendo e4ecutado no !indo"s >4 ou #$.

SQL Server 7ro+iler


O SQL Server =rofiler uma 5tima ferramenta para se ver um registro cont%nuo da atividade do servidor em tempo real. O =rofiler monitora os eventos produ2idos atravs do SQL Server+ filtra esses eventos baseados em critrios espec%ficos do usu/rio+ e mostra a sa%da tra ada na tela+ em um ar6uivo ou uma tabela.. Yoc3 pode at repetir tra ados capturados anteriormente.

42

Apostila Microsoft SQL Server 7.0

Monitorando com o SQL Server 7ro+iler


O SQL Server =rofiler uma ferramenta gr/fica 6ue permite aos adminsitradores do sistema monitor eventos de mecanismo do SQL Server. ;ventos so a nova maneira de se comunicar com e do SQL Server. Com eventos de mecanismo+ um ob:eto CO, pode interceptar esses eventos e agir de acordo. ;4emplos de eventos de mecanismo incluem& Comandos $ransact-SQL& S;L;C$+ '#S;0$+ .=-7$; e -;L;$;. Cone4o+ falha ou descone4o de login. O come o ou fim de um procedimento arma2enado Astored procedureB. O come o ou fim de um lote de comandos SQL. .m erro escrito no log de erros do SQL Server. .m blo6ueio ad6uirido ou liberado em um ob:eto de banco de dados. .m cursor 6ue for aberto Os dados gerados sobre cada evento podem ser capturados e salvos em um ar6uivo ou uma tabela do SQL Server para an/lise posteriro. =ara coletar os dados dos eventos de mecanismo voc3 define tra os. ;4emplos de dados capturados com um tra o incluem& O tipo AclasseB de um evento+ tal como Ob:ect&Created+ o 6ual indica 6ue um ob:eto de banco de dados foi criado. O nome do computador em 6ue o cliente est/ rodando. O '- do ob:eto afetado pelo evento+ tal como um nome de tabela. O nome no SQL Server+ do usu/rio 6ue e4ecutou 5 comando. O te4to do comando $ransact-SQL ou procedimento arma2enado. 7 hora em 6ue o evento come ou e terminou. Yoc3 pode filtrar os dados de modo 6ue apenas um subcon:unto dos dados do evento se:a coletado. 'sso te permite coletar apenas os dados de evento em 6ue voc3 est/ interessado. =or e4emplo+ se voc3 apenas est/ interessado em um usu/rio particular ou nos efeitos de um certo banco de daos+ voc3 pode filtrar esses ob:etos espec%ficos e ignorar os outros. Yoc3 tambm pode definir filtros em itens 6ue demorem mais do 6ue o esperado+ tal como uma consulta 6ue demore mais do 6ue QJ segundos. O SQL Server =rofiler tambm permite 6ue os dados de eventos AcapturadosB se:am recolocados no SQL Server+ 'sso vai efetivamente ree4ecutar os eventos salvos como eles originalmente ocorreram. O SQL Server =rofiler pode ser usado para& ,onitorar o desempenho do SQL Server. -epurar comandos $ransact-SQL e procedimentos arma2enados. 'dentificar consultas 6ue e4ecutam com lentido. Corrigir problemas no SQL Server. =or e4emplo+ voc3 pode capturar os eventos 6ue possam estar levando a um problema potencial e ento replicar o processo em um sistema de teste para isolar e corrigir o problema. 7bai4o voc3 v3 a cau4a de di/logo inicial para a cria ao de um tra o. Yeremos a cria o de tra os em mais detalhes posteriormente.

43

Apostila Microsoft SQL Server 7.0

SQL Server QuerA $nalA8er


O 7nali2ador de Consultas (QuerL 7nalL2er* fornece uma interface gr/fica para analisar o plano de e4ecu o de uma ou m)ltiplas consultas+ ver os dados de resultado+ e recomendar ind%ces . O QuerL 7nalL2er se parece com a :anela QuerL 6ue havia no ;nterprise ,anager do SQL Server S.?. Se voc3 :/ for familiari2ado com a verso S.?+ essa ferramenta ser/ bem f/cil de se usar; mas+ de 6ual6uer maneira+ a6ui ser/ e4plicado como utili2/-la. ;ssa uma ferramenta bem f/cil de se usar. Yamos come ar pela e4ecu o de uma consulta simples.

3sando o QuerA $nalA8er


R. 7 partir do ,,C+ selecione $ools \ QuerL 7nalL2er. Yoc3 tambm pode e4ecutar o QuerL 7nalL2er pelo grupo de programas do SQL Server A'niciar \ =rogramas \ ,icrosoft SQL Server G.J \ QuerL 7nalL2erB. P. Conecte-se ao servidor SQL Server local. ;fetue logon com a conta e senha Ase houverB do S7 6ue voc3 especificou na instala o. Caso voc3 tenha privilgios administrativos nessa m/6uina+ voc3 tambm pode se logar com a conta do #$ (use !indo"s #$ autenthication*. -essa maneira+ voc3 tambm efetuar/ logon como S7. O. Selecione pubs da lista na :anela de consulta. ;sse ser/ o banco de dados no 6ual e4ecutaremos a consulta. Yoc3 tambm poderia ao invs de especificar o banco de dados+ usar a declara o .se antes de sua consulta. Q. ;screva o seguinte na parte superior da :anela se a :anela tiver mais de uma parte.
S;L;C$ d T0O, authors

?. Selecione o mtodo de e4ecu o. So dispon%veis 6uatro op 1es diferentes de e4ecu o& ;4ecu o padro ACtrle$B mostra os resultados na forma de um ar6uivo te4to+ como na figura abai4o. T? ArunB e4ecuta a consulta+ 6ual6uer 6ue se:a o modo de e4ecu o selecionado. ;4ecutar para uma grade ACtrle-B fornece um formato mais agrad/vel de se visuali2ar+ em uma planilha+ uma estrutura parecida com tabelas Aum laLout de linha-colunaB. 7 figura abai4o mostra o resultado em uma grade. =lano de e4ecu o ACtrleLB+ mostrado na pr54ima figra+ mostra o processo real de e4ecu o 6ue ocorreu. ;ssa consulta no mostrou nada de interessante por6ue s5 havia uma tabela envolvida+ mas se fosse e4ecutada uma consulta mais comple4a com :un 1es internas ou e4ternas+ voc3 visuali2aria sua representa o gr/ifca. 44

Apostila Microsoft SQL Server 7.0

7n/lise de fndice ('nde4 7nalLsis* provavelmente lhe avisar/ 6ue ele foi incapa2 de recomendar 6uais6uer %ndices. ;ntretanto+ se voc3 come ar a escrever consultas comple4as 6ue so usadas fre6uentemente+ voc3 pode col/-las nesse utilit/rio e test/-las para sugest1es de %ndice. Quando voc3 decide fa2er uma nova consulta+ voc3 pode fa23-la em outra :anela+ clicando no boto #e" QueL ACtrle#B+ ou ento apagar a consulta :/ feita e digitar novos comandos. #ote 6ue a cada nova :anela aberta+ ou se:a+ a cada consulta feita em outra :anela+ est/ sendo estabelecida uma nova cone4o. Observe na parte inferior da :anela do QuerL 7nalL2er Aao lado de ConnectionsB+ 6uantas so as cone41es estabelecidas. -urante a instala o+ se voc3 optou por licenciar o SQL Server como =er Server+ seu servidor s5 suportar/ tantas cone41es simultZneas 6uantas houverem sido definidas nessa fase da instala o. ;nto+ se voc3

receber uma mensagem como a mostrada abai4o

voc3 deve fechar algumas cone41es A:anelas de consultaB antes de tentar abrir alguma nova+ ou ento+ no menu Tile \ Configure+ deve definir o n)mero m/4imo de cone41es aceitas+ na op o n)mero m/4imo de cone41es A,a4imum number of connectionsB.

45

Apostila Microsoft SQL Server 7.0

SQL Server Boo!s .nline


O SQL Server Foo9s Online um grande recuro para ter em mos. O guia de a:uda ,S boo9s online est/ se tornando o modo pardro de acessar a a:uda com aplica 1es+ servi os e linguagens de progrma o ,icrosoft. Os livros online so um lugar onde voc3 vai encontrar tudo a respeito de um produto particular+ e em alguns casos+ a combina o de v/rios produtos.

Foo9s Online tem uma navega o simples+ como mostrado abai4o. O boo9s online lembra o ,,C ou o !'ndo"s ;4plorer. O lado es6uerdo tem uma viso de estrutura de /rvore en6uanto o lado direito tem um '; Anavegador 'nternet ;4plorerB. 7s p/ginas mostradas no lado direito so simples p/ginas H$,L Avoc3 pode inclusive visu2ali2ar seu c5digo fonteB.

7rocura 'or conteFdo G%ontentsH


.ma busca por conte)do como procurar em um livro baseado no sum/rio dos cap%tulos. O sum/rio do cap%tulo vis%vel como uma estrutura de /rvore. Clicar em um livro no lado es6uerdo da :anela causa a abertura do livro revelando p/ginas+ ou cap%tulos. Cli6ue em uma p/gina e a p/gina ser/ e4ibida na parte direita da :anela. Clicar em um cap%tulo A6ue se parece com um outro livroB vai abrir mais cap%tulos+ e mais p/ginas do lado es6uerdo.

7rocura 'or 6ndice GInde(H


7 procura pelo %ndice vai pes6uisar todas as palavras 6ue foram inde4adas 6uando da cria o do material de a:uda. Ocasionalmente+ voc3 pode no encontrar o item 6ue voc3 est/ procurarndo e precisar/ de uma procura mais geral. .se a guia =es6uisar (Search* para pes6uisas mais gerais.

3sando a guia 7es,uisar GSearc5H


7 guia de consulta permite 6ue voc3 digite uma palavra e ser/ pes6uisado em todos os documentos atr/s da6uela palavra. O lado es6uerdo da tela vai ser preenchido com os documentos 6ue contm aAsB palavraAsB 6ue voc3 pediu.

46

Apostila Microsoft SQL Server 7.0

Guia Favoritos GFavoritesH


7 guia favoritos um livro de marcadores bem f/cil de se usar. Se voc3 gostou da informa o 6ue voc3 encontrou e 6uer torn/-las mias f/cil de ser encontrada posteriormente+ simplesmente selecione a guia Tavoritos. 7 parte inferior da guia vai mostrar-lhe o t5pico atual. Cli6ue em 7dd para coloc/-lo como parte do seu marcador. Se voc3 precisar de e4cluir um item+ simplesmente selecione-o e aperte o boto 0emove. Se voc3 est/ inseguro a respeito de como algumas das ferramentas funcionam+ ou apenas es6ueceu+ lembrese de 6ue os assistentes so 5timas ferramentas para o aprendi2ado. ;les fa2em um trabalho e4celente de apontar as tarefas necess/rias 6ue esto sendo reali2adas. -epois de e4ecutar os assistents algumas ve2es+ voc3 ter/ uma boa idia do processo como um todo. ,esmo 6ue voc3 no tenha+ use esta apostila ou os livros on-line.

$sistentes do SQL Server GSQL Server Di8ardsH


Os assistentes do SQL Server te a:udam a crirar seus ob:etos de banco de dados e servi os sem precisar de estar sempre olhando em suas notas sobre como fa2er algo corretamente. $er um assistente para te encaminhar em cada tarefa uma maneira 5tima de se aprender o 6ue necessita ser feito. Quase tudo tem um assistente. Yoc3 :/ deve alguma ve2 ter evitado uma certa tarefa s5 por6ue voc3 no tinha tempo para pes6uisar como reali2/-la. Como voc3 deve saber+ a no ser 6ue voc3 conhe a o procedimento completamente+ voc3 cometer/ algum erro ao reali2/-lo. Seu tempo :/ bem escasso sem ter 6ue se recuperar de erros. Se voc3 no estiver certo do 6ue voc3 est/ fa2endo+ ou se voc3 est/ fa2endo certo+ dei4e o assistente ser seu guia. 7lguns desses assistentes so simples+ en6uanto outros so mais comple4os. $odos os assistentes esto dispon%veis no ;nterprise ,anager. =ara ver uma lista dos assistentes dispon%veis+ selecione algum servidor+ e no menu Terramentas ($ools* do ;nterprise ,anager+ escolha a op o 7ssistentes (!i2ards*. 7parece a :anela mostrada abai4o& 76ui sero discutidos alguns assistentes e os passos principais para o assistenete+ dando o m/4imo de detalhe poss%vel+ mas sem e4agerar. Fem+ assistenstes esto a% pra te a:udar+ e sup1e-se 6ue eles tornem as tarefas dif%ceis mais f/ceis. ;nto+ vamos come ar.

47

Apostila Microsoft SQL Server 7.0

$ssistente de registro de servidor G&egister Server Di8ardH


O 7ssistente de registro de servidor obviamente+ registra seu servidor. O ato de registrar o seu servidor o processo de contar ao SQL Server o nome do servidor 6ue voc3 6uer registrar+ o tipo de seguran a 6ue voc3 est/ utili2ando+ seu nome de login e senha Ase no estiver usando autentica o do #$B+ e o grupo de servidor do 6ual esse servidor vai fa2er parte. Yoc3 :/ deve ter utili2ado esse assistente em 0egistrando um servidor. Yoc3 pode criar um novo grupo de servidor 6uando da cria o de um novo banco de dados. .m servidor somente pode e4istir como parte de um grupo.

$ssistente de segurana GSecuritA Di8ardH


O assistente de seguran a automati2a a tarefa de cria o de logins para um servidor SQL Server. O assistente te permite especificar ou uma conta de usu/rio do #$ ou criar uma autentica o do SQL Server. Ye:a mais sobre seguran a.

$sistente de criao de bancos de dados G%reate Database Di8ardH


O assistente de cria o de banco de dados automati2a a tarefa de criar um banco de dados. O assistente te acompanha nos passos principais para cria o de um banco de dados. ;stes passos incluem o nome do banco de dados+ os ar6uivos do banco de dados+ os ar6uivos de log+ o tamanho inicial dos ar6uivos+ e como esses ar6uivos iro crescer. $abelas no so criadas a6ui. ;las so criadas por comandos $ransact-SQL ou clicando com o boto direito em um banco de dados e escolhendo #ova $abela (#e" $able*. Saiba mais sobre a cria o de bancos de dados e tabelas.

48

Apostila Microsoft SQL Server 7.0

$ssistente de criao de alertas G%reate $lerta Di8ardH


Quando ocorre um erro ou 6uando o SQL Server dispara um evento+ eles so guardados no log de eventos de aplica o+ com o nome de SQL Server. O SQL Server 7gent l3 o log de eventos e fa2 uma compara o dos eventos com um alerta A6ue voc3 defineB. Se houver uma combina o+ um alerta disparado.

$ssistente de criao de trabal5os G%reate Iob Di8ardH


.m trabalho algo 6ue e4ecutado com uma fre6g3ncia regular. O trabalho pode ser um comando $ransactSQL+ um e4ecut/vel+ ou mesmo um script AYF-ScriptB. =or e4emplo+ voc3 pode 6uerer limpar todas as visitas 6ue o seu banco de dados monitora para uma p/gina !eb. 'sso pode ser feito a cada dia+ m3s+ semana ou ano. O trabalho pode ser simples ou bastante comple4o.

$ssistente de 'lano de manuteno de banco de dados GDatabase Maintenance 7lan Di8ardH


;ste assistente creia uma srie de trabalhos 6ue a:udam o seu banco de dados a funcionar melhor. =or e4emplo+ ele pode agendar a reali2a o de bac9ups em uma base regular e checar por 6uais6uer inconsist3ncias. Ye:a um e4emplo de seu uso 7gendando um bac9up completo de banco de dados ou de log de transa 1es utili2ando um assistente.

$ssistente de criao de 6ndices G%reate Inde( Di8ardH


fndices so criados automaticamente 6uando voc3 cria restri 1es =0',70^ e .'#'Q.;; entretanto+ voc3 tambm pode 6uerer criar %ndices em outros campos 6ue sero consultados com fre6u3ncia. ;ste assistente permite 6ue voc3 selecione uma tabela e crie %ndices em um campo dado. Se %ndices :/ e4istem+ o assistente te notificar/ disso. Yoc3 ppode especificar o %ndice como um %ndice clusteri2ado Ase algum ainda no e4isteB+ um %ndice no-clusteri2ado+ %ndice )nico+ os fatores de preenchimento tambm podem ser definidos. Se um item no puder ser inde4ado+ tal como um tipo de dados imagem+ 6ue aram2aena as informa 1es em um formato bin/rio A6ue no bom para inde4a oB+ o SQL Server blo6uear/ esse campo para inde4a o. 7prenda mais sobre %ndices.

$ssistente de criao de 'rocedimentos arma8enados G%reate Stored 7rocedure Di8ardH


=rocedimentos arma2enados so consultas compiladas. =or 6ue voc3 as 6uereria e o 6ue elas soa $oda ve2 6ue voc3 e4ecuta uma consulta+ o SQL ;ngine deve e4aminar a consulta e certificar-se de 6ue todos os campos e tabelas so v/lidos. ;nto+ ele deve se decidir a e4ecutar a consulta. Quando voc3 cria um procedimento arma2enado+ tudo isso feito de uma ve2. O fato de no ter o trabalho adicional de encontrar o melhor caminho a tomar 6uando da e4ecu o de uma consulta pode melhorar o desempenho. Yer mais detalhes em =rocedimentos 7rma2enados.

$ssistente de criao de vis/es G%reate Vie

Di8ardH

.ma viso uma tabela virtual 6ue representa uma maneira diferente de se visuali2ar uma tabela. ;la pode ser usada por v/rios motivos+ incluindo mas no limitada a mostrar apenas a informa o 6ue interessa em uma tabela muito grande. =ermiss1es de seguran a podem ser administradas para permitir 6ue apenas os pessoal de 0H ve:a toda a tabela 6ue mostra sal/rios+ en6uanto usu/rios normais en4ergam apenas a informa o b/sica na viso. Ye:a mais sobre vis1es.

$ssistente de Im'ortao)4('ortao D?S GD?S Im'ort)4('ort

i8ardH

O assistente -$S (-ata $ransformation Services - Servi os de $ransforma o de -ados* permite 6ue voc3 utili2e facilmente o -$S para importar ou e4portar informa 1es heterog3neas utili2ano OL; -F e O-FC; voc3 tambm pode copiar es6uemas e dados de bancos de dados entre bancos de dados relacionais. 49

Apostila Microsoft SQL Server 7.0

-ado heterog3neo o dado 6ue arma2enado em diferentes formatos de ar6uivo. 7 utili2a o do -$S com OL; -F e O-FC te permite recuperar dados de um formato de ar6uivo e us/-los com outro formato.

Deb $ssistant Di8ard


;ste assistente gera p/ginas H$,L baseado em dados do servidor SQL Server+ consultas+ procedimentos arma2enado+ e por a% vai. Os ar6uivos H$,L podem ser publicados de modo 6ue se:am vis%veis na intranet da companhia ou na 'nternet para 6ue o mundo ve:a. 7s p/ginas por si no consultam o banco de dados e assim no so dinZmicas. ;ntretanto+ pode-se cirar trabalhos 6ue recriem as p/ginas regularmente+ ou um gatilho poderia lan ar um atarefa para recriar a p/gina 6uano um item fosse inserido+ atuali2ado ou e4clu%do. Ye:a o uso desse asistente.

J - Fundamentos de ar,uitetura do SQL Server


. %at<logo do Sistema %om'onentes do Banco de Dados 4strutura dos bancos de dados

Objetivos: - Conhecer os conceitos de aloca o de espa o usados pelo SQL Server; - $er uma viso geral dos itens 6ue comp1em o cat/logo do sistema; - Saber o 6ue um banco de dados e o 6ue ele contm.

. %at<logo do Sistema
.m 6anco de dados uma cole o de tabelas e outros ob:etos relacionados. ;4istem dois tipos de banco de dados& os bancos de dados do sistema so usados pelo SQL Server para operar e gerenciar o sistema e os bancos de dados do usu8rio so usados para arma2enar os seus pr5prios dados. O cat/logo do sistema composto de tabelas no banco de dados master#

Bancos de Dados do Sistema


7o instalar o SQL Server+ so criados os seguintes bancos de dados do sistema& master Controla os bancos de dados do usu/rio e a opera o do SQL Server. $em como tamanho inicial RS ,F. N importante manter um bac9up atuali2ado desse banco de dados. Contm informa 1es sobre& - Contas de login - =rocessos em e4ecu o - ,ensagens de erro - Fancos de dados criados no servidor - ;spa o alocado para cada banco de dados - $ravas (loc9s* de linha ativas - ;spa o alocado para cada banco de dados - =rocedimentos arma2enados do sistema model N um modelo usado para cria o de novos bancos de dados+ 6ue pode ser usado para definir padr1es+ como autori2a 1es default de usu/rio+ op 1es de configura o+ tipos de dados etc. Sempre 6ue um banco de dados do usu/rio criado+ o conte)do de model copiado para ele. Seu tamanho inicial P.? ,F. ;sse modelo pode ser alterado. 50

Apostila Microsoft SQL Server 7.0

tempd6 .sado para arma2enar tabelas tempor/rias e resultados intermedi/rios de consultas. 8eralmente o seu conte)do e4clu%do sempre 6ue um usu/rio se desconecta. ;le cresce automaticamente confome necess/rio. Seu tamanho inicial de @ ,b. msd6 .sado pelo servi o SQLServer7gent+ para controlar tarefas como replica o+ agendamento de tarefas+ bac9ups e alertas. Contm algumas tabelas de sistema+ 6ue arma2enam informa 1es usadas pelo SQL;4ecutive.Seu tamanho inicial RP ,b.

?abelas do Sistema
7s tabelas do sistema+ arma2enadas no banco de dados master e em cada banco de dados de usu/rio+ cont3m informa 1es sobre o SQL Server e sobre cada banco de dados de usu/rio. ;4istem RG tabelas em cada banco de dados 6ue formam o cat8logo do 6anco de dados. $odas come am com o prefi4o s&s e contm as seguintes informa 1es& 'nforma o sobre cada coluna de cada tabela+ e cada parZmetro de s&scolumns procedimento. =ara cada ob:eto de banco de dados Aviso+ regra+ default+ trigger+ s&scomments procedimentoB contm o te4to de sua defini o. 'nclui informa 1es sobre todas as restri 1es usadas no banco de s&sconstraints dados. s&sdepends 0egistra as depend3ncias entre ob:etos do banco de dados. $em uma linha para cada grupo de ar6uivos arma2enado em um s&s+ilegroups banco de dados. s&s+iles 'nforma 1es sobre cada ar6uivo de um banco de dados. 'nforma 1es sobre todas as restri 1es de chaves estrangeiras s&s+oreign/e&s encontradas em todas as tabelas de um banco de dados. s&s+ullte@tcatatalogs Lista todos os cat/logos de te4to completo para esse banco de dados. 'nforma o para cada %ndice criado e para cada tabela sem %ndices+ s&sinde@es alm de informa 1es para cada tabela 6ue possui colunas te@t ou image. s&sinde@/e&s 'nforma o sobreas chaves e as colunas de um %ndice. s&smem6ers 'nforma 1es sobre os membros de cada papel. 'nforma o sobre cada ob:eto do banco de dados Atabelas+ vis1es+ s&so6<ects procedimentos+ regras+ defaults e gatilhosB. 'nforma o sobre permiss1es atribu%das a usu/rios+ grupos e papis s&spermissions em um banco de dados. s&sprotects =ermiss1es atribu%das ] contas de seguran a. 'nforma o sobre toda restri o de integridade referencial usada numa s&sre+erences coluna ou tabela de um banco de dados. 'nforma o sobre cada tipo de dados Ado sistema ou definido pelo s&st&pes usu/rioB. 'nforma o sobre cada usu/rio 6ue pode ter acesso ao banco de s&susers dados. ;4istem tambm tabelas locali2adas apenas no banco de dados master+ 6ue comp1em o cat8logo do sistema. ;las cont3m as seguintes informa 1es& 'nforma 1es sobre cada unidade de aloca o gerenciada pelo SQL s&sallocations Server s&salt+iles 'nforma 1es sobre cada ar6uivo gerenciado pelo SQL Server 'nforma o sobre con:untos de caracteres (character sets* e ordens de s&scharsets classifica o (sort orders*. s&scon+igures? =arZmetros de configura o do SQL Server. 51

Apostila Microsoft SQL Server 7.0

s&scurcon+igs s&sdata6ases s&sdevices s&slanguages s&sloc/in+o s&slogins s&smessages s&soled6users s&sper+in+o s&sprocesses s&sremotelogins s&sservers

'nforma o sobre os bancos de dados e4istentes. 'nforma o sobre os dispositivos+ tais como o dispositivo de fita. 'diomas suportados pelo servidor. $ravas Aloc9sB ativas. Contas de login. ,ensagens de erro do sistema Contm uma linha para cada usu/rio e senha mapeados em um servidor. 'nforma o sobre os monitores de performance. =rocessos em e4ecu o Contas de login remotas. Servidores remotos conhecidos.

7rocedimentos $rma8enados do Sistema


.m procedimento arma'enado (stored procedure* uma se6g3ncia de comandos da linguagem $ransactSQL+ compilados e arma2enados num banco de dados. Os procedimentos arma'enados do sistema (sLstem stored procedures* so fornecidos pelo SQL Server+ arma2enados no banco de dados master e automati2am v/rias tarefas comuns de gerenciamento. =or e4emplo+ o procedimento spAdata6ases mostra 6uais os nomes de bancos de dados e4istentes. =ara e4ecutar esse procedimento+ use o QuerL 7nalL2er A'niciar \ =rogramas \ ,icrosoft SQL Server G.J \ QuerL 7nalL2erB. #a p/gina CQuerLC digite&
spDdatabases

; cli6ue no boto ;4ecute. ;le mostra um resultado como&


-7$7F7S;D#7,; ------------------master model msdb pubs tempdb A? ro"AsB affectedB -7$7F7S;DS'h; --------------RGQJ@ RJPQ @R>P OJGP PJQ@ 0;,70IS -------------------AnullB AnullB AnullB AnullB AnullB

Outro procedimento )til spAhelpd6. ;le mostra informa 1es sobre um banco de dados. Sinta(e@ spDhelpdb (Fanco de -ados* 4(em'lo@
spDhelpdb master

O resultado ser/ algo como&


name --------master dbDsi2e ---------RG.JJ ,F o"ner ------sa dbid -----R created ------7pr O R>>S status -----------------trunc. log on ch9pt. si2e ----->JPQ IF RP@J IF

name ------------master mastlog

fileid filename ------- ------------------------------------------------------------R T&E,SSQLGEdataEmaster.mdf P T&E,SSQLGEdataEmastlog.ldf

filegroup -------------=0',70^ #.LL

ma4si2e -----------.nlimited .nlimited

gro"th usage ------- ---------RJi data onlL RJi log onlL

#ote 6ue todos os procedimentos arma2enados do sistema t3m nomes 6ue come am com KspDK Aabrev. de sLstem procedureB.7o e4ecutar um procedimento 6ue inicie com KspDK o procedimento ser/ procurado no banco de dados atual+ se no for encontrado ele ser/ procurado no banco de dados ,aster. 52

Apostila Microsoft SQL Server 7.0

Quando um procedimento inicia com K4pDK ele um procedimento estendido+ 6uer di2er 6ue no foi escrito em SQL+ mas foi compilado como parte de uma -LL. =or e4emplo+ o procedimento 4pDcmdshell e4ecuta um programa. =ara e4ecutar o procedimento necess/rio 6ue este:a posicionado no banco de dados ,aster. Sinta(e 4pDcmdshell KnomeDar6uivoK Onde& nomeDar6uivo o nome do programa 6ue dese:a e4ecutar. 4(em'lo@
4pDcmdshell Kcalc.e4eK

=ara mais informa 1es consulte SQL Server Foo9s Online em $ransact-SQL %tem Stored =rocedures ou no Help e4iste t5picos para cada procedimento.

%om'onentes do Banco de Dados


.m banco de dados composto de o6<etos+ 7ndices+ tipos de dados e restriBes: Cada ob:eto tem uma linha correspondente na tabela sLsob:ects. Seu tamanho m%nimo R ,b.

.b:etos
.m ob:eto contm dados ou interage com os dados. Cada ob:eto tem uma linha correspondente a tabela sLsob:ects.;4istem os seguintes tipos de ob:etos& Con:unto de linhas+ compostas de colunas. Cada coluna ,a6ela (table* arma2ena um item de dado. .ma forma alternativa de visuali2ar dados em uma tabela ou 2is=o (vie"* mais. .m valor 6ue inserido numa coluna caso no tenha sido De+ault informado um valor. "egra (rule* Yalida os dados 6ue podem ser inseridos em uma coluna. *rocedimento arma'enado .ma se6g3ncia de comandos SQL+ compilados e arma2enados (stored procedure* no banco de dados. .ma se6g3ncia de comandos e4ecutados automaticamente !atilho (trigger* 6uando os dados so modificados numa tabela.

Kndices
.m %ndice composto de ponteiros para os dados+ ordenados pelo valor de uma ou mais colunas. 7travs de um %ndice+ poss%vel acessar mais rapidamente os dados+ dado o valor de algumas colunas.

?i'os de dados
.m tipo de dados especifica 6uais os valores 6ue podem ser arma2enados em uma coluna.

&estri/es GconstraintsH
.ma restri o refor a a integridade dos dados em uma tabela+ ou entre duas tabelas+ controlando 6uais dados podem ser inseridos.

4strutura dos bancos de dados


$odo banco de dados do SQL Server constitu%do de dois ou mais ar6uivos f%sicos de sistema operacional. =odem haver tr3s tipos diferentes de ar6uivos f%sicos& 53

Apostila Microsoft SQL Server 7.0

7r6uvios prim/rios& $odo banco de dados inclui ao menos um ar6uivo prim/rio+ 6ue feito para arma2enar todos os ob:etos de banco de dados+ tais como tabelas e %ndices. ;ste ar6uivo tambm usado para apontar para o resto dos ar6uivos 6ue constituem o banco de dados. 7r6uivo secund/rio& .m banco de dados s5 ter/ um ar6uivo secund/rio se o ar6vuivo prim/rio no for grande o suficiente para aram2enar todos os dados. .m banco de dados pode ter um+ ou muitos ar6uivos secund/rios. 7r6uivo de log& $odo banco de dados tem um ar6uivo de log+ 6ue usado para rgistrar todas informa 1es antes 6ue elas se:am escritas em um ar6uivo prim/rio ou secund/rio. ;sses dados so utili2ados para a:udar na recupera o+ no caso de um problema com o banco de dados. .m banco de dados pode ter um ou v/rios ar6uivos de log se o ar6uivo de log original ficar sem espa o.

>omes l9gicos e +6sicos


.m dispositivo de banco de dados um ar6uivo do sistema operacional+ por e4emplo+ o banco de dados ,7S$;0 o ar6uivo C&E,SSQLGE-7$7Emaster.mdf+ locali2ado no servidor. Como default+ os bancos de dados so criados no diret5rio -:;MSSQL4E-7$7+ mas podem ser criados em 6ual6uer drive ou diret5rio acess%vel ao SQL Server. Cada banco de dados tem um nome +7sico Ao caminho e nome do ar6uivoB e um nome l9gico Anome usado dentro do SQL ServerB. Os dois no precisam estar relacionados. =or e4emplo+ ao criar um banco de dados chamado Y;#-7S+ o SQL Server+ por default+ cria um ar6uivo chamado Y;#-7S.mdf+ no diret5rio -:;MSSQL4;-7$7. O nome f%sico pode ser 6ual6uer nome suportado pelo sistema operacional. O nome l5gico pode ter at OJ caracteres e geralmente s5 contm letras e n)meros Aespa os no so recomendadosB.

Subdivis/es de es'ao
Cada banco de dados dividido ainda em& 0nidades Cada unidade de aloca o tem ?RP Ib Ameio megabLteB. .m banco de dados de ocupa sempre um n)mero inteiro de unidades de aloca o. aloca=o& .m e@tent tem SQ Ib. Cada ob:eto de banco de dados Atabelas+ %ndicesB ocupa um E@tents& n)mero inteiro de e@tents .ma p/gina A@IbB a unidade mais b/sica de arma2enamento. .m ob:eto do *8gina banco de dados sempre cresce em p/ginas e em alguns casos pode ficar (page*& fragmentado+ disperso em p/ginas distantes uma da outra.

$r,uivos 'rede+inidos
7o instalar o SQL Server+ so criados 6uatro bancos de dados+ com os seguintes nomes l5gicos& ,7S$;0& composto pelos ar6uivos master#md+ e mastlog#ld+ Aar6uivo prim/rio e de logB ,S-F& composto pelos ar6uivos msd6data#md+ e mastlog#ld+ Aar6uivo prim/rio e de log+ 6ue por sinal o mesmo ar6uivo de log do banco de dados masterB ,O-;L& composto pelos ar6uivos model#md+ e modellog#ld+. $;,=-F& composto pelos ar6uivos tempd6#md+ e templog#ld+

54

Apostila Microsoft SQL Server 7.0

L - %riando Bancos de Dados


Gerenciando Bancos de Dados $r,uivos e gru'os de ar,uivos %riando ?abelas $lterando 4strutura das ?abelas De+inindo o'/es de bancos de dados %onsidera/es 'ara mel5or gerenciamento Documentando a criao de bancos de dados

Objetivos: - 7prender a gerenciar bancos de dados+ criando+ alterando ou e4cluindo-os com o ;nterprise ,anager ou com comandos SQL; - 7prender a criar tabelas e alterar sua estrutura.

Gerenciando Bancos de Dados


Yoc3 cria um banco de dados (database* definindo o seu nome+ nome do ar6uivo+ tamanho inicial+ tamanho m/4imo e ta4a de crescimeno. 'nicialmente apenas o administrador do sistema AS7B pode criar+ modificar o tamanho e e4cluir os bancos de dados+ mas ele pode conceder permiss1es a outros usu/rios para isso. ;m vers1es anteriores do SQL Server+ havia a a necessidade de cria o de dispositivos (devices*+ e dentro destes deviam ser criados os bancos de dados. Fem+ no e4istem mais dispositivos no SQL Server G.J. -epois de fa2er e4cluir ou fa2er altera 1es no do banco de dados recomend/vel fa2er bac9up do banco de dados master+ por6ue ele contm informa 1es sobre cada banco de dados. ,ais especificamente+ a tabela de sistema s&sdata6ases+ do banco de dados master+ arma2ena as informa 1es sobre todos os bancos de dados. ,ais adiante+ discutiremos com mais detalhes as tabelas de sistema.

. Log de ?ransa/es G?ransaction LogH


Quando voc3 cria um banco de dados+ criado tambm um log de transaBes (transaction log* para esse banco de dados. ;sta uma /rea reservada onde todas as altera 1es feitas no banco de dados so registradas. Qual6uer comando SQL 6ue modifica os dados registra as altera 1es antes no log de transa 1es+ depois nas tabelas alteradas. Quando e4ecutado um comando 6ue altera os dados Ainsere+ altera ou e4clui linhas numa tabelaB+ essa altera o salva primeiro no log de transa 1es+ escrevendo diretamente em disco. Os dados so alterados apenas em mem5ria. =eriodicamente+ o SQL Server fa2 um chec/point+ um processo 6ue grava em disco as altera 1es feitas em mem5ria. A8eralmente um chec9point feito uma ve2 por minutoB. O log de transa 1es permite recuperar o banco de dados a um estado consistente+ em caso de uma pane no sistema. Sempre 6ue o SQL Server inicia+ ele verifica o log de transa 1es para saber se alguma altera o foi iniciada+ mas no salva nos dados. 7s transa 1es 6ue no foram confirmadas AcommitedB so canceladas. =ode ser interessante colocar o log fisicamente em um disco diferente dos dados+ o 6ue melhora o desempenho+ pois as opera 1es de ;/S podem ser feitas simultaneamente nos dois. 55

Apostila Microsoft SQL Server 7.0

=or padro+ ao se criar um banco de dados+ o log de transa 1es criado com P?i do tamanho do banco de dados. =ode-se mudar o tamanho do mesmo. 0ecomenda-se alocar para o log de RJ a P?i do tamanho do banco de dados.

%riando bancos de dados com o 4nter'rise Manager


Yamos criar um banco de dados com o SQL ;nterprise ,anager. #o SQL ;nterprise ,anager+ conecte-se ao servidor dese:ado. Cli6ue em C-atabasesC com o boto direito e selecione >e Database111 ;m C#ameC colo6ue ;4emplo. #ote 6ue ao definir o nome+ o nome do ar6uivo (Tile #ame* A6ue no necessariamente o mesmo nome definido em C#ameC+ apesar de poder serB+ muda para o nome 6ue voc3 est/ digitando seguido de Ddata. Se voc3 clicar na guia $ransaction Logs+ ver/ 6ue o ar6uivo de log est/ sendo criado+ com o nome do banco de dados seguido de Dlog+ e no caminho definido para o banco de dados. ;m CLocationC+ o local no disco onde voc3 6uer arma2en/-lo. =or padro+ o SQL Server define o local como sendo a subpasta E-7$7+ na pasta de instala o do SQL Server. O tamanho usado+ CSi2eC+ aparece como R ,b por default+ substitua esse valor por RJ ,b. O tamanho alocado para o log+ por default+ tambm R ,b+ como voc3 pode ver clicando na guia $ransaction Logs. ,ude o tamanho para P,b. 7 op o C7utomaticallL gro" fileC determina se o ar6uivo poder/ ser e4pandido ] medida 6ue for ficando cheio. Se essa op o estiver marcada+ voc3 pode determinar a ta4a de crescimento Aa cada ve2 6ue ele for e4pandido+ ser/ e4pandido em #i ou # megabLtesB do ar6uivo (Tile gro"th* em porcentagem ou megabLtes. $ambm poss%vel determinar um tamanho limite para o ar6uivo (0estrict file gro"th* ou dei4/-lo crescer indeterminadamente (.nrestricted file gro"th*. =or padro+ como se percebe+ o banco de dados tem como propriedades crescer automaticamente+ em incrementos deRJ por cento+ e sem limite de crescimento. Cli6ue em .! e aguarde alguns instantes& o banco de dados ser/ criado+ com RJ ,b para os dados e P ,b para o log de transa 1es. >ota@ O ar6uivo de banco de dados gravado com a e4tenso 1md+ ou 1nd++ dependendo se ele for um ar6uivo prim/rio ou no-prim/rio no banco de dados. Yeremos isso melhor em 8rupos de 7r6uivos. O ar6uivo de log gravado com a e4tenso 1ld+. >ota@ 7o ser criado+ um banco de dados uma c5pia do banco de dados model. Quais6uer op 1es ou configura 1es do banco de dados model so copiadas no novo banco de dados.

%riando bancos de dados com comandos SQL


=ara gerenciar os bancos de dados com comandos SQL necess/rio 6ue se este:a posicionado no banco de dados master. Yoc3 tambm pode criar um banco de dados com o comando SQL+ C0;7$; -7$7F7S;. Sinta(e
C0;7$; -7$7F7S; nomeDbancodedados (O# j (=0',70^* A#7,; k nomeDl5gicoDar6uivo+ T'L;#7,; k KcaminhoDeDnomeDar6uivoK (+ S'h; k tamanho* (+ ,7<S'h; k tamanhoDm/4imo* (+ T'L;80O!$H k ta4aDcrescimento* l(+...n* * (LO8 O# j A#7,; k nomeDl5gicoDar6uivo+ T'L;#7,; k KcaminhoDeDnomeDar6uivoK (+ S'h; k tamanho*B l(+..n*

56

Apostila Microsoft SQL Server 7.0 *

Onde& nomeA6ancodedados o nome do banco de dados 6ue se dese:a criar. nomeAlogicoAar:uivo um nome usado para referenciar o ar6uivo em 6uais6uer comandos SQL e4ecutados depois 6ue o banco de dados tiver sido criado. *"(MA"C& ;sta op o especifica o grupo de ar6uivos prim/rio. O grupo de ar6uivos prim/rio deve contre todas as tabelas de sistema para o banco de dados. .m banco de dados s5 pode ter um grupo de ar6uivo =0',70^. Se no for especificado algum+ o primeiro listado ser/ o prim/rio. AYeremos grupos de ar6uivos em breveB. 1(LE AME& 76ui deve-se especificar o caminho e nome do ar6uivo 6ue voc3 est/ criando. O ar6uivo deve estar locali2ado na mesma m/6uina 6ue o servidor SQL Server. ;le pode estar em uma unidade de disco diferente contanto 6ue este:a na mesma m/6uina. S(DE& ;specifica o tamanho em megabLtes 6ue voc3 6uer alocar para o seu banco de dados. O valor m%nimo R,F+ e o padro O,F para ar6uivos de dados+ e R,F para ar6uivos de log. AObs.& o padro a6ui di2 respeito ] cria o do banco de dados por comandos SQL. Como vimos+ 6uando criado pelo ;nterprise ,anager+ o padro R,F de tamanho tanto para ar6uivos de banco de dados 6uanto para ar6uivos de logB. MA$S(DE& ;sta op o lhe permite especificar o tamanho m/4imo at o 6ual seu ar6uivo pode crescer. O padro permite 6ue seu ar6uivo cres a at 6ue o disco este:a cheio. 1(LE!"O),E& ;specifica a ta4a de crescimento do ar6uivo. ;ste a:uste no pode e4ceder a configura o de ,7<S'h;. .m valor de J indica 6ue no permitido crescimento. O padro RJ por cento+ significando 6ue a cada ve2 6ue o ar6uivo cresce+ ser/ alocado um espa o adicional de RJ por cento para ele. .m banco de dados 6ue este:a em mais de um ar6uivo Ave:a 7r6uivos para maiores detalhesB+ s5 e4pandido depois 6ue o )ltimo ar6uivo estiver cheio. #a op o LO8 O# se aplicam as mesmas defini 1es acima+ e4ceto pelo fato de no ser o ar6uivo de dados+ mas sim o ar6uivo de log de transa 1es 6ue estar/ sendo criado. Caso LO8 O# se:a omitido+ criado um )nico ar6uivo de log com um nome gerado pelo sistema e um tamanho 6ue se:a P? por cento da soma dos tamanhos de todos os ar6uivos de dados para o banco de dados. >ota@ 7 op o TO0 LO7- pode ser adicionada antes da declara o LO8 O#. #o recomenda-se us/-la+ :/ 6ue e4iste apenas para compatibilidade com vers1es anteriores. ;sta op o coloca a op o +or dbo use onlA como verdadeira+ e o status como para carregar (+or load*. ;ssa op o no necess/ria+ pois no SQL Server G+ temos o comando 0;S$O0; pode recriar um banco de dados como parte de uma opera o de recupera o. Como e4emplo+ vamos criar um banco de dados+ entrando com o seguinte c5digo SQL no QuerL 7nalL2er.
C0;7$; -7$7F7S; ;4emploP O# =0',70^ A#7,;k;4emploPDdata+ T'L;#7,; k KC&E,SSQLGE-7$7E;4emploP.mdfK+ S'h; k RJ,F+ ,7<S'h; k R?,F+ T'L;80O!$H k P?iB LO8 O# A#7,; k ;4emploPDlog+ T'L;#7,; k KC&E,SSQLGE-7$7E;4emploP.ldfK+ S'h; k Q,F+ ,7<S'h; k S,F+ T'L;80O!$H k P,FB

7bai4o+ vemos o resultado da e4ecu o deste comando&

57

Apostila Microsoft SQL Server 7.0

%riando um banco de dados com o assistente de criao de banco de dados


O assistente de cria o de banco de dados te encaminha atravs dos passos necess/rios para a cria o de um banco de dados e de um log. =ara inici/-lo+ fa a o seguinte& R. 7 partir do ;nterprise ,anager+ com algum servidor selecionado+ selecione $ools \ !i2ards. $odos os ob:etos 6ue t3m assistentes so listaos em ordem alfabtica. P. -epois 6ue voc3 selecionar -atabases Abancos de dadosB a /rvore deve se e4pandir para lhe mostrar uma lista dos assistentes dispon%veis para bancos de dados. O. Selecione Create -atabase !i2ard. 7parece a tela de boas-vindas. Cli6ue em #e4t para continuar. Q. ;scolha o nome do banco de dados+ e o local onde ficaro seus ar6uivos de dados e de log. Cli6ue em #e4t. ?. ,ude o nome do ar6uivo e seu tamanho inicial+ conforme dese:ar. S. =or fim aparecem as op 1es+ 6ue so no permitir o crescimento do banco de dados (-o not automaticallL gro" the database*. Caso voc3 escolha por crescer automaticamente o banco de dados (7utmotaicallL gro" database files*+ voc3 tem as op 1es de increment/-lo em megabLtes (8ro" the files in ,egabLtes*+ ou porcentagem (8ro" the files bL percent*+ e definir as ta4as de incremento. =or fim+ voc3 pode limitar o tamanho m/4imo do ar6uivo (0estrict file gro"th to A,FB* ou dei4/-lo crescer o 6uanto for necess/rio (.nrestricted Tile 8ro"th*. Ta a suas op 1es e cli6ue em #e4t para continuar. G. ;nto+ defina o nome do ar6uivo e tamanho inicial para o ar6uivo de log. Cli6ue em #e4t para continuar. @. Tinalmente+ defina o mesmo citado no item S acima+ para o ar6uivo de log. Cli6ue em #e4t. >. 7parece a tela final+ mostrando-lhe o 6ue voc3 definiu. Se estiver satisfeito+ cli6ue em Tinish para criar o banco de dados. Caso contr/rio+ cli6ue em Fac9 e altere as op 1es 6ue achar necess/rio.

58

Apostila Microsoft SQL Server 7.0

$lterando um banco de dados 'elo 4nter'rise Manager


7p5s criar um banco de dados+ voc3 pode aument/-lo ou redu2%-lo. #o ;nterprise ,anager+ cli6ue no banco de dados com o boto direito e em 7ro'erties. Yoc3 ver/ os tamanhos atuais dos dados e do log e 6uanto espa o dispon%vel e4iste em cada um. =ara aumentar o tamanho do banco de dados+ informe o novo tamanho em CSpace 7llocatedC A6ue deve ser maior 6ue o tamanho originalB. #ote 6ue voc3 s5 pode alterar+ na guia 8eneral+ o espa o alocado para o banco de dados+ e as op 1es de crescimento (Tile =roperties*. N s5 clicar em O9 ou em 7pplL 6ue as mudan as so aplicadas. Yamos aumentar o tamanho do banco de dados de RJ para RR ,b. Fasta para isso+ digitar RR em CSpace 7llocatedC+ e clicar em O9. =ara redu2ir um banco de dados pelo ;nterprise ,anager+ selecione o banco de dados 6ue se 6uer redu2ir+ cli6ue com o boto direito nele+ selecione 7ll $as9s \ Shrin9 database+ como mostrado abai4o #a :anela 6ue aparece a seguir+ voc3 tem algumas op 1es+ 6ue so&

59

Apostila Microsoft SQL Server 7.0

0eorgani2e database& esta op o+ se selecionada+ fa2 uma espcie de desfragmenta o do banco de dados+ agrupando as p/ginas preenchidas+ e dei4ando as p/ginas livres no fim do ar6uivo. Shrin9 database files& esta op o disponnibili2a o espa o livre 6ue houver no fim do ar6uivo+ para o sistema operacional.

$lterando um banco de dados com comandos SQL


=ara e4pandir o banco de dados+ pode-se usar 7L$;0 -7$7F7S;. =ara utili2ar este comando+ deve-se estar posicionado no banco de dados master& Sinta(e
7L$;0 -7$7F7S; nomeDbancodedados ,O-'T^ T'L; A#7,; k nomeDlogicoDar6uivo+ S'h; k novoDtamanho B

Onde& nomeA6ancodedados o nome do banco de dados 6ue se dese:a alterar. nomeAlogicoAar:uivo o nome l5gico dado ao ar6uivo na sua cria o. novoAtamanho o tamanho novo do banco de dados. ;sse tamanho fornecido em ,egaFLtes. =or e4emplo& Yamos fa2er o banco de dados aumentar para RP ,b. =ara isso+ digite&
7L$;0 -7$7F7S; ;4emploP ,O-'T^ T'L; A#7,; k ;4emploPDdata+ S'h; k RP,F B

=ara e4pandir o log de transa 1es do banco de dados ;4emploP para O,F+ fa a&
7L$;0 -7$7F7S; ;4emploP ,O-'T^ T'L; A#7,; k ;4emploPDlog+

60

Apostila Microsoft SQL Server 7.0 S'h; k O,F B

Com o comando SQL 7L$;0 -7$7F7S;+ tambm poss%vel acrescentar ar6uivos ao banco de dados. =ara isso+ usa-se a op o 7-- T'L;. Yamos adicionar um ar6uivo secund/rio ao banco de dados ;4emploP+ com Q,F iniciais+ e tamanho m/4imo de G,F. Ye:a mais sobre ar6uivos secund/rios.
7L$;0 -7$7F7S; ;4emploP 7-- T'L; A#7,;kK;4emploPDdadosPK+ T'L;#7,;kKC&Emss6lGEdataE;4emploP.ndfK+ S'h;kQ,F+ ,7<S'h;kG,FB

=ara redu2ir o tamanho de um banco de dados+ usa-se o comando -FCC SH0'#I-7$7F7S;. ;ste comando redu2 o tamanho de todos os ar6uivos de dados no banco de dados mas no diminui o tamanho dos ar6uivos de log. Sinta(e
-FCC SH0'#I-7$7F7S; A#omeDFancode-ados +porcentagemDfinal (+ j#O$0.#C7$; \ $0.#C7$;O#L^l* B

Onde& nome6ancodedados o nome do banco de dados 6ue se dese:a alterar o tamanho. porcentagemA+inal a porcentagem de espa o livre a ser dei4ada no banco de dados depois 6ue o mesmo for redu2ido. O,"0 -A,E fa2 com 6ue o espa o liberado permane a nos ar6uivos de banco de dados. Se no especificado+ o espa o liberado tornado dispon%vel para o sistema operacional. ,"0 -A,EO LC fa2 com 6ue o espa o no utili2ado em ar6uivos de dados se:a liberado para o sistema operacional e encolhe o ar6uivo at o )ltimo espa o utili2ado+ redu2indo o tamanho do ar6uivo sem mover 6uais6uer dados. #enhuma tentativa feita para relocar colunas em p/ginas no-alocadas. porcentagemA+inal ignorado 6uando $0.#C7$;O#L^ for utili2ado. #o se pode diminuir o tamanho do banco de dados para um tamanho menor do 6ue o tamanho m%nimo do ar6uivo+ 6ue espcificado 6uando o ar6uivo foi originalmente criado. >ota@ O banco de dados no pode ficar menor 6ue o tamanho do banco de dados model. =ode-se tambm redu2ir todo o banco de dados usando o comando -FCC SH0'#IT'L;. ;ste comando redu2 o tamanho de um ar6uivo de dados espec%fico em um banco de dados. Sinta(e
-FCC SH0'#IT'L; AjnomeAar:uivo\idAar:uivol+ (novoAtamanho*(+ j;,=$^T'L; \ #O$0.#C7$; \ $0.#C7$;O#L^l*B

$odas as op 1es :/ foram e4plicadas para o comando -FCC SH0'#I-7$7F7S;+ com duas e4ce 1es& 76ui se especifica o nome do ar6uivo+ e no do banco de dados. O novo tamanho dado em ,F+ no em porcentagem como acima. 7 op o ;,=$^T'L; migra todos os dados do ar6uivo especificado para outros ar6uivos no mesmo grupo de ar6uivos. O SQL Server no permite mais 6ue dados se:am colocados no ar6uivo em 6ue foi utili2ada a op o ;,=$^T'L;. ;sta op o permite 6ue o ar6uivo se:a e4clu%do com o comando 7L$;0 -7$7F7S;+ com a op o 0;,OY; T'L;. >ota@ Quando se usa 6ual6uer das op 1es ;,=$^T'L;+ #O$0.#C7$; ou $0.#C7$;O#L^+ no se especifica o novo tamanho. Como e4emplo+ vamos redu2ir o ar6uivo secund/rio do banco de dados ;4emploP A;4emploP.ndfB+ 6ue chamamos de ;4emploPD-adosP para P,F. =ara isso+ entre com o seguinte comando no QuerL 7nalL2er&
-FCC SH0'#IT'L; A;4emploPD-adosP+PB

O banco de dados a ser redu2ido no precisa estar em modo de )nico usu/rio+ outros usu/rios podem estar trabalhando com o banco de dados 6uando ele redu2ido. 61

Apostila Microsoft SQL Server 7.0

4(cluindo um banco de dados 'elo 4nter'rise Manager


=ara e4cluir um banco de dados no ;nterprise ,anager+ cli6ue no Fanco de -ados e com o boto direito + cli6ue em Delete. Confirme a e4cluso. 7p5s e4cluir um banco de dados+ no poss%vel recuperar os dados+ a no ser 6ue voc3 tenha feito um bac9up. Como iremos usar este banco de dados nos e4emplos posteriores+ crie-o novamente com as mesmas caracter%sticas 6ue foi criado anteriormente.

4(cluindo um banco de dados com comandos SQL


=ara e4cluir um banco de dados+ usa-se& Sinta(e
-0O= -7$7F7S; nomeDbancodedados(+ nomeDbancodedados...*

Onde& nomeA6ancodedados o nome do banco de dados 6ue se dese:a e4cluir. Yoc3 pode e4cluir um banco de dados ou m)ltiplos banco de dados. ;4emplo& =ara e4cluir v/rios banco de dados ao mesmo tempo + usa-se&
-0O= -7$7F7S; ;4emplo+ ;4emploP

Se 6uisssemos ter e4cluido somente o banco de dados ;4emploP+ ter%amos usado&


-0O= -7$7F7S; e4emploO

Se e4ecutar este comando crie o banco de dados ;4emplo novamente+ pois iremos us/-los nos e4emplos posteriores.

$r,uvos e gru'os de ar,uivos


7r6uivos e grupos de ar6uivos so a nova estrutura de arma2enamento do SQL Server. .m banco de dados arma2enado em uma estrutura de ar6uivos+ e ento um grupo de ar6uivos padro criado 6uando voc3 cria seu banco de dados. Outros ar6uivos podem ser acrescentados ao seu pro:eto. ;stes ar6uivos podem ser agrupados com base em grupos de ar6uivos definidos pelo usu/rio. #a maioria dos casos+ voc3 usar/ apenas o grupo de ar6uivos padro+ e ter apenas um ar6uivo para a sua estrutura de banco de dados. Como veremos+ entretanto+ assim 6ue voc3 estiver famili2ari2ado com o conceito de ar6uivo e grupo de ar6uivo+ o desempenho pode ser aumentado e a administra o tornada mais f/cil. O uso de grupos de ar6uivos uma tcnica avan ada de pro:eto de banco de dados. Yoc3 deve compreender a estrutura+ transa 1es+ consultas+ e dados de seu banco de dados profundamente de modo a determinar a melhor maneira de arama2enar tabelas " %ndices em grupos de ar6uivos espec%ficos. ;m muitos casos+ o uso das capacidades de sistemas 07'- A0edundant 7rraL of 'ne4pensive -is9sB fornece 6uase o mesmo ganho em desempenho 6ue voc3 poedr/ obter com o uso de grupos de ar6uivos sem o encargo administrativo e4tra de definir e gerenciar grupos de ar6uivos. 62

Apostila Microsoft SQL Server 7.0

$r,uivos
Como dito anteriormente+ o SQL Server cria bancos de dados e logs baseado em uma estrutura de ar6uivos ao invs da especifica o de -ispositivo (-evice* de vers1es anteriores. 'sso permite 6ue os ar6uivos de bancos de dados e de log se:am escalados com maior facilidade. Cada ar6uivo pode ser usado por apenas um banco de dados. ;le no pode ser compartilhado entre v/rios bancos de dados. Quando um banco de dados for e4clu%do+ se:a atravs de -0O= -7$7F7S; ou do ;nterprise ,anager+ o ar6uivo associado tambm e4clu%do. O SQL Server tem tr3s tipos de ar6uivos& 7rim<rio1 O ar6uivo prim/rio o ponto de partida do banco de dados e aponta para o resto dos ar6uivos no banco de dados. $odo banco de dados deve ter ao menos um ar6uivo de dados prim/rio. 7 e4tenso padro e recomendada 1md+. Secund<rio1 7r6uivos de dados secund/rios so os outros Ano-prim/riosB ar6uivos no banco de dados. 7lguns bancos de dados podem no ter 6uais6uer ar6uivos secund/rios de dados+ en6uanto outros podem ter m)ltiplos ar6uivos secund/rios. 7 e4tenso padro e recomendada 1nd+. Log1 .m ar6uivo de log uma /rea de arma2enamento para todas as mudan as nos bancos de dados. $do banco de dados deve ter pelo menos um ar6uivo de log. 7 e4tenso recomendada 1ld+. >ota@ o SQL Server no te for a a usar a e4tenso recomendada para os ar6uivos. ;las e4istem simplesmente para te a:udar a gerenciar seus ar6uivos de bancos de dados.

Gru'os de ar,uivos
Os ar6uivos de bancos de dados so agrupados para fins de aloca o e administra o. 7lguns sistemas podem ter seu desempenho aumentado pelo controle do arma2enamento de dados e %ndices em unidades e disco espec%ficas. 8rupos de ar6uivos podem au4iliar nesse processo. O administrador de sistema pode criar grupos de ar6uivos para cada unidade de disco+ e ento definir 6ue certas tabelas+ %ndices+ entre outros ob:etos+ se:am arma2enados em grupos de ar6uivos espec%ficos. Quando um banco de dados criado+ o grupo de ar6uivos prim/rio contm o ar6uivo prim/rio. Outros grupos de ar6uivos Agrupos de ar6uivos definidos pelo usu/rioB podem ser criados e agrupados para fins de aloca o e administra o. Yoc3 cria um grupo de ar6uivos como uma cole o nomeada de ar6uivos. #enhum ar6uivo pode ser membro de mais de um grupo de ar6uivos. ;4istem tr3s tipos de grupos de ar6uivos 7rim<rio1 O grupo de ar6uivo prim/rio contm o ar6uivo de dados prim/rio e 6uais6uer outros ar6uivos de dados no atribu%dos a outros grupos de ar6uivos. $odas as tabelas de sistema so arma2enadas no grupo de ar6uivos prim/rio. De+inido 'elo usu<rio G3ser-de+inedH1 8rupos de ar6uivos definidos pelo usu/rio so criados usando a palavra-chave T'L;80O.= 6uando se utili2a os comandos C0;7$; -7$7F7S; ou 7L$;0 -7$7F7S;. 7adro1 O grupo de ar6uivos padro contm todas as tabelas e %ndices 6ue no t3m um grupo de ar6uivo especificado 6uando eles so criados. ;m cada banco de dados+ apenas um grupo de ar6uivos de cada ve2 pode ser o grupo de ar6uivos padro. >ota@ 7r6uivos de log nunca fa2em parte de um grupo de ar6uivos. O espa o do log gerenciado separadamente do espa o dos dados. Yamos agora criar um grupo de ar6uivos chamado 8rupoRD;4emploP no banco de dados ;4emploP+ e ento adicionar um ar6uivo secund/rio chamado $este ao banco de dados ;4emploP+ com o nome f%sico de $este8rupoRD;4emploP.ndf+ com O,F de tamanho+ mas este ar6uivo ser/ adicionado ao grupo 8rupoRD;4emploP. ;ntre com o seguinte c5digo SQL&
7L$;0 -7$7F7S; ;4emploP 7-- T'L;80O.= 8rupoRD;4emploP 8O

63

Apostila Microsoft SQL Server 7.0 7L$;0 -7$7F7S; ;4emploP 7-- T'L; A#7,;k$este+ T'L;#7,;kKC&E,SSQLGE-7$7E$este8rupoRD;4emploP.ndfK+ S'h;kO,FB $O T'L;80O.= 8rupoRD;4emploP 8O

#ote 6ue o parZmetro $O T'L;80O.= simplesmente especifica o grupo em 6ue o ar6uivo criado deve ser adicionado. 7gora+ vamos usar o comando C0;7$; -7$7F7S; para criar um ar6uivo de dados prim/rio+ um grupo de ar6uivos definido pelo usu/rio+ e um ar6uivo de log. ;nto+ emitiremos o comando 7L$;0 -7$7F7S; para mudar o grupo de ar6uivos padro para o grupo de ar6uivos definido pelo usu/rio.
.S; ,7S$;0 8O -- dois tra os indicam um coment/rio -- C0'70 O F7#CO -; -7-OS C0;7$; -7$7F7S; ;4emplo#ovo O# =0',70^ A#7,;k;4emplo#ovoDdata+ T'L;#7,; k Kc&Emss6lGEdataE;4emplo#ovo.mdfK+ S'h;kRJ,F+ ,7<S'h;kR?,F+ T'L;80O!$HkRJiB+ T'L;80O.= ;4emplo#ovoDT8R A#7,;k;4emplo#ovoDT8RD-7$R+ T'L;#7,;kKc&Emss6lGEdataE;4emplo#ovoDT8RD-7$R.ndfK+ S'h;kO,F+ ,7<S'h;kRJ,F+ T'L;80O!$HkRJiB+ A#7,;k;4emplo#ovoDT8RD-7$P+ T'L;#7,;kKc&Emss6lGEdataE;4emplo#ovoDT8RD-7$P.ndfK+ S'h;kO,F+ ,7<S'h;kRJ,F+ T'L;80O!$HkRJiB LO8 O# A#7,;k;4emplo#ovoDlog+ T'L;#7,;kKc&Emss6lGEdataE;4emplo#ovo.ldfK+ S'h;k?,F+ ,7<S'h;kR?,F+ T'L;80O!$HkRJiB 8O -- .se 7L$;0 para mudar o grupo de ar6uivos padro 7L$;0 -7$7F7S; ;4emplo#ovo ,O-'T^ T'L;80O.= ;4emplo#ovoDT8R -;T7.L$ 8O

Visuali8ando in+orma/es de ar,uivos e gru'os de ar,uivos


Os seguintes procedimentos arma2enados do sistema e4ibem informa 1es sobre grupos de ar6uivos s'M5el'+ile (+ileAname*& e4ibe os nomes f%sicos e atributos dos ar6uivos associados com o banco de dados atual. .se este procedimento arma2enado para determinar os nomes dos ar6uivos a serm ane4ados ou removidos do servidor. s'M5el'+ilegrou' (+ilegroupAname*& e4ibe os nomes e atributos de grupos de ar6uivos associados com o banco de dados atual. 64

Apostila Microsoft SQL Server 7.0

%riando ?abelas
.ma tabela (table* um ob:eto do banco de dados+ composto de 2ero ou mais linhas (ro"s*+ contendo os dados+ organi2ados em uma ou mais colunas (columns*. =ara criar a tabela+ voc3 pode usar o ;nterprise ,anager ou comandos SQL --L A-ata -efinition Language - linguagem de defini o de dadosB. 7ntes de criar suas tabelas+ importante levar em conta um bom pro:eto do banco de dados+ 6ue determina 6uais as informa 1es a serem guardadas. 7p5s criar as tabelas+ voc3 utili2a comandos SQL -,L A-ata ,anipulation Language - linguagem de manipula o de dadosB para inserir novas linhas numa tabela+ alterar colunas das linhas e4istentes+ e4cluir linhas e consultar dados.

?i'os de Dados
Cada coluna tem um tipo de dados (datatLpe*+ 6ue determina 6ue tipo de informa o Acaracteres+ n)meros+ datas/horasB pode ser colocada na coluna e 6uais as caracter%sticas desses dados. O tipo determinado 6uando a tabela criada e no pode ser alterado posteriormente. Yoc3 pode usar tipos de dados do sistema (sLstem datatLpes*+ predefinidos+ ou criar novos tipos de dados+ chamados tipos de dados do usu8rio (user datatLpes*+ baseados nos tipos pree4istentes. Os tipos de dados e4istentes so& 7ara dados ?i'o ?aman5o Caractere charAnB+ varcharAnB+ nvarcharAnB? ncharAnB at n bLtes #umrico e4ato decimalAp+eB ou numericAp+eB -depende#umrico apro4imado +loat+ real @+ Q bLtes #umrico inteiro int? smallint? tin&int Q+ P+ R bLte ,onet/rio mone&? smallmone& @+ Q bLtes -ata e hora datetime? smalldatetime @+ Q bLtes Fin/rio 6inar&AnB? var6inar&AnB n bLtes $e4to e imagens te@t? image? nte@t -vari/velOutros 6it? timestamp R bit+ @ bLtes =ara dados contendo caracteres+ charAnB arma2ena um n)mero fi4o de caracteres. =or e4emplo+ uma coluna do tipo char(F5% tem sempre OJ caracteres. Se forem informados menos+ o restante completado com espa os. M/ o tipo varcharAnB arma2ena uma 6uantidade vari/vel de caracteres+ at o m/4imo informado. Os tipos ncharAnB e nvarcharAnB+ arma2enam dados .nicode+ de comprimento fi4o ou vari/vel+ e usam o con:unto de caracteres .#'CO-; .CS-P. Os tipos Cnumricos e4atosC+ decimal e numeric+ permitem arma2enar dados e4atos+ sem perdas devidas a arredondamento. 7o usar esses tipos+ voc3 pode especificar uma precis=o+ 6ue indica 6uantos d%gitos podem ser usados no total e uma escala+ 6ue indica 6uantos d%gitos podem ser usados ] direita do ponto. =or e4emplo+ decimalA>+PB permite guardar G d%gitos antes do ponto decimal e P ap5s+ num total de >+ assim o maior valor poss%vel >>>>>>>+>>. Os tipos Cnumricos ine4atosC+ +loat e real+ arma2enam dados numricos+ mas nem sempre mantm a preciso suficiente para arma2enar corretamente n)meros de v/rios d%gitos. O tipo mone& usado para valores monet/rios+ ocupando @ bLtes em disco e permitindo valores entre ->PP.OOG.PJO.S@?.QGG+?@J@ e e>PP.OOG.PJO.S@?.QGG+?@JG A>PP trilh1esB. O tipo smallmone& permite valores entre - PRQ.GQ@+OSQ@ e ePRQ.GQ@+OSQG APRQ milB e ocupa Q bLtes em disco. -os tipos inteiros+ int usa OP bits AQ bLtesB+ permitindo arma2enar at e/-P.RQG.Q@O.SQG+ smallint usa RS bits AP bLtesB permitindo e/-OPGSG e tin&int usa @ bits AR bLteB+ permitindo n)meros no-negativos de J a P??. O tipo datetime arma2ena valores contendo a data e hora+ com preciso de R/OJJ de segundo+ entre Rm de :aneiro de RG?O e OR de de2embro de >>>> Ao sculo sempre arma2enadoB. O tipo smalldatetime ocupa menos espa o e arma2ena datas e horas de Rm de :aneiro de R>JJ at S de :unho de PJG>+ com preciso de R minuto. 65

Apostila Microsoft SQL Server 7.0

$ipos bin/rios so usados para dados 6ue o SQL Server no interpreta+ por e4emplo+ o conte)do de um ar6uivo bin/rio. O tipo te@t usado para colunas com dados CmemoC+ ou se:a+ com te4to de tamanho vari/vel; o tipo nte@t arma2ena dados .nicode de tamanho vari/vel. O tipo image arma2ena imagens+ tambm de tamanho vari/vel. Os tipos te@t e nte@t+ arma2enam dados de tamanho vari/vel+ mas podem arma2enar R.JGO.GQR.@PO caracteres+ para o caso do nte@t+ e P.RQS.Q@O.SQG caracteres para o caso do tipo te@t. ;n6uanto isso+ os tipos varchar e nvarchar arma2enam CsomenteC @JJJ caracteres AvarcharB ou QJJJ caracteres AnvarcharB O tipo 6it arma2ena valor R ou J. .ma coluna do tipo timestamp no pode ser alterada pelo usu/rio. ;la definida automaticamente com a data e hora atual 6uando a linha inserida ou atuali2ada.

De+inindo novos ti'os de dados


Yoc3 pode criar seus pr5prios tipos de dados+ para facilitar a padroni2a o+ usando o procedimento de sistema spAaddt&pe ou o ;nterprise ,anager. .sando o procedimento de sistema spAaddt&pe: Sinta(e
spDaddtLpe nomeDtipo+ tipoDdado (+ valorDnull*

Onde& nomeAtipo o nome do tipo de dado 6ue dese:a criar. tipoAdado o tipo de informa o 6ue ira conter este tipo criado. ;4emplo& char+ int+..etc. valorAnull identifica se este tipo pode ou no conter valores nulos. ;4emplos& #o QuerL 7nalL2er na lista C-FC+ selecione o banco de dados C;4emploC. -igite e e4ecute os seguintes comandos&
spDaddtLpe cpf+ KcharARRBK go spDaddtLpe nomepessoa+ KcharA?JBK go spDaddtLpe valorgrande+ KnumericAR?+PBK go spDaddtLpe tipooperacao+ KSmall'ntK+ #O#.LL

7 palavra reservada go indica final de comando. Com isso+ usar o tipo KcpfK+ por e4emplo+ o mesmo 6ue usar charARRB+ mas mais intuitivo e f/cil de entender. Se voc3 especificar #O#.LL no tipo significa 6ue ele no aceita valores nulos. Yoc3 pode e4cluir um tipo com spAdropt&pe& Sinta(e
spDdroptLpe nomeDtipo

Onde& nomeAtipo o nome do tipo de dados 6ue dese:a e4cluir. ;4emplo& =ara e4ecutar este e4emplo continue posicionado no banco de dados ;4emplo.
spDdroptLpe nomepessoa

=ara criar+ alterar ou e4cluir tipos com o ;nterprise ,anager+ voc3 deve abrir ome-do-6anco-de-dados cli6ue em .ser -efined -atatLpes com o boto direito cli6ue em &e+res5 Apara atuali2ar os dados B e com o boto direito cli6ue em >e 3serDe+inedData?A'e111. Ser/ mostrada a seguinte tela&

66

Apostila Microsoft SQL Server 7.0

K#ame K indica o nome do tipo de dados. K-ata tLpeK o tipo de informa o 6ue ir/ conter esse tipo criado. KLengthK indica o tamanho do tipo de dado. K7llo" #ullK se esta op o estiver marcada indica 6ue o tipo criado aceita valores nulos. 7s op 1es K-efaultK e K0uleK permitem 6ue voc3 selecione uma regra ou um default+ se houver algum+ e ligue-o ao tipo de dados definido por voc3. =ara apagar algum tipo de dados+ selecione-o do lado direito A6uando voc3 estiver com .ser -efined -ata$Lpes selecionado do lado es6uerdo do ;nterprise ,anagerB. Cli6ue com o boto direito no tipo de dados 6ue voc3 6uer e4cluir+ e ento selecione a op ao -elete. 7pague todos os tipos de dados e crie o tipo de dados Se4o. ;m C#ameC colo6ue dmSe4o+ C-ata $LpeC selecione char+ CLengthC colo6ue R. ,ais tarde veremos como restringir o valor de um tipo.

%riando uma tabela com o 4nter'rise Manager


.m banco de dados pode ter no m/4imo P bilh1es de tabelas e cada tabela pode ter no m/4imo RJPQ colunas. =ara criar uma tabela com o ;nterprise ,anager+ abra o banco de dados ;4emplo. -entro dele+ selecione o item $ables. Cli6ue em C$ablesC com o boto direito e em >e ?able. ;ntre com o nome da tabela a ser criada. #o caso Cliente; cli6ue em O9. ;ntre com os campos da tabela+ conforme mostrado abai4o& Ye:a 6ue no t%tulo da :anela+ aparece o nome do banco de dados em 6ue a tabela est/ sendo criada Ano caso Ke4emploKB. 7s colunas para as 6uais a op o C#ullsC est/ marcada permitem o valor #.LL+ ou se:a+ podem ser dei4ados sem preencher ao inserir dados. M/ os outros so #O$ #.LL+ ou se:a+ obrigat5rio informar um valor para eles.

67

Apostila Microsoft SQL Server 7.0

#ote 6ue definimos algumas colunas com o tipo char+ como C=T e .T+ por6ue elas geralmente t3m tamanho fi4o. M/ outras como #ome+ Cidade e =a%s+ geralmente t3m tamanho vari/vel+ por isso+ para economi2ar espa o no banco de dados+ usamos varchar. 7 coluna -efault especifica um valor default 6ue inserido caso nada tenha sido informado. #o caso da data de cadastro+ usamos a fun o getdateAB+ 6ue retorna a data do dia. #o caso do pa%s+ o default a string CFrasilC caso nada se:a informado. 7gora cli6ue no boto CSaveC para salvar a tabela. >ota@ Yoc3 pode ter um identificador e4clusivo em todo o banco de dados+ para uma coluna. =ara isso+ selecione o tipo de dados da coluna como uni,ueidenti+ier+ e mar6ue a cai4a de verifica o 's0o"8uid. 'sso far/ com 6ue se:a atribu%do um valor default (-efault Yalue* igual a Ane"idABB. Ye:a mais sobre identificadores globalmente e4clusivos.

%riando tabelas com comandos SQL


.ma tabela tambm pode ser criada com o comando C0;7$; $7FL; do SQL. =or e4emplo+ a mesma tabela do e4emplo anterior poderia ser criada com o comando abai4o+ iremos mudar somente o nome da tabela e esta tabela ser/ criada no banco de dados ;4emplo&
C0;7$; $7FL; ClienteR A CodCliente int #O$ #.LL+ #ome varcharA?JB+ C=T varcharARRB #.LL+ -ataCadastro datetime #O$ #.LL -;T7.L$ AgetdateABB+ Cidade varcharAPJB #.LL+ .T charAPB #.LL+ =a%s varcharAPJB -;T7.L$ AKFrasilKB B

#ote 6ue a lista de colunas delimitada com par3nteses. =ara cada coluna+ deve-se informar #.LL ou #O$ #.LL+ indicando se esta permite valores nulos ou no. Caso essa op o no se:a informada+ como no caso de K#omeK e K=a%sK acima+ o SQL Server assume 6ue a coluna #O$ #.LL AgeralmenteB. =ara saber se o SQL usa #.LL ou #O$ #.LL por default e4ecute o procedimento s'M dbo'tion. Se aparecer na primeira linha KK7#S' null defaultK indica 6ue o valor default #.LL+ se no aparecer esta string a op o default #O$ #.LL. Sinta(e
spDdboption nomeDbancodedados Kansi null defaultK+ opcao

68

Apostila Microsoft SQL Server 7.0

Onde& nomeA6ancodedados o nome do banco de dados em 6ue se dese:a verificar a op o default. opcao se for true o valor default ser/ #.LL+ se for false o valor default ser/ #O$ #.LL. Observa o& O padro 7#S' utili2a #ull como default+ ao desativar esta op o no SQL+ pode ser 6ue esta op o na sua tabela no este:a de acordo com o 6ue voc3 esperava. Ye:a outros parZmetros de spDdboption em C-efinindo op 1es do banco de dadosC ;4ecute os seguintes comandos para criar duas tabelas no banco de dados ;4emplo&
C0;7$; $7FL; -epartamento A Cod-epartamento int+ #ome varcharA?JB+ Cod-eptSuperior int #ull B go C0;7$; $7FL; Tuncionario A CodTuncionario int+ #ome varcharA?JB+ Cod-epartamento int+ 0amal int #ull+ Salario moneL+ -ata7dmissao datetime+ -ataCadastro datetime #O$ #.LL -;T7.L$ AgetdateABB+ Se4o charARB B

69

Apostila Microsoft SQL Server 7.0

4(cluindo uma tabela


=ara e4cluir uma tabela Achamado de drop no SQL ServerB com o ;nterprise ,anager+ cli6ue na tabela com o boto direito+ cli6ue em Delete e pressione o boto -rop 7ll . Como iremos usar a tabela Cliente nos e4emplos posteriores + crie-a novamente com a mesma estrutura definida anteriormente. 7travs do SQL+ pode-se usar o comando -0O= $7FL;. Sinta(e@
-0O= $7FL; ((bancoDdados.*O"ner.*nomeDtabela (+ ((bancoDdados.*o"ner.*nomeDtabela...*

Onde& 6ancoAdados o nome do banco de dados a 6ue a tabela pertence. ;ssa op o opcional+ ela ser/ usada somente 6uando se estiver posicionado num determinado banco de dados e se dese:a e4cluir a tabela de outro banco de dados. nomeAta6ela o nome da tabela 6ue se dese:a remover. ;ste procedimento pode ser usado para e4cluir v/rias tabelas ao mesmo tempo. ;4emplos&
-rop $able ClienteR

ou
-rop $able ;4emplo.dbo.clienteR

$lterando a estrutura das tabelas


-epois 6ue uma tabela for criada+ pode-se mudar v/rias das op 1es 6ue foram definidas 6unado a tabela foi originalmente criada+ incluindo& Colunas podem ser acrescentadas+ modificadas ou e4clu%das. =or e4emplo+ o nome da coluna+ comprimento+ tipo de dados+ preciso+ escala+ e o fato de aceitar ou no valores nulos+ podem todos ser mudados+ embora e4istam algumas restri 1es. 0estri 1es =0',70^ I;^ e TO0;'8# I;^ podem ser acrescentadas ou e4clu%das. 0estri 1es .#'Q.; e CH;CI e defini 1es -;T7.L$ podem ser acrescentadas ou e4clu%das. .ma coluna identificadora pode ser acrescentada ou removida usando a propriedade '-;#$'^ ou 0O!8.'-COL. 7 propriedade 0O!8.'-COL tambm pode ser adicionada ou removida de uma coluna e4istente+ embora apenas uma coluna em uma tabela possa ter a propriedade 0O!8.'-COL de cada ve2. 70

Apostila Microsoft SQL Server 7.0

O nome ou o dono de uma tabela tambm podem ser modificados. Quando voc3 fa2 isso+ tambm deve-se mudar o nome da tabela em 6uais6uer gatilhos+ procedimentos arma2enados+ scripts SQL+ ou outro c5digo de programa o 6ue utili2e o nome ou propriet/rio antigo da tabela. >ota@ N importante considerar 6ue a mudan a de tipo de dados em uma coluna pode causar truncamento dos dados+ ou mesmo ser imposs%vel de ser feita Apor e4emplo+ se voc3 6uiser converter um tipo char para um tipo inteiro e :/ houver valores no-numricos arma2enados nessa colunaB.

$lterando a tabela com o 4nter'rise Manager


;ssas modifica 1es podem ser feitas no ;nterprise ,anager. =or e4emplo+ cli6ue na tabela CClienteC Adentro de C;4emploE$ablesC+ as tabelas do banco de dados ;4emplo aparecero do lado direito do ;nterprise ,anagerB com o boto direito e cli6ue em Design ?able. #o final da lista de colunas+ acrescente uma nova coluna+ com o nome C'dadeC+ do tipo CtinLintC Aidades no sero maiores 6ue P??B. #ote 6ue 6uando voc3 adiciona uma nova coluna+ a op o C7llo" #ullsC deve ficar marcada. 7ltere o comprimento de Cidade para OJ. $ambm cli6ue na coluna C.TC e altere o nome para C;stadoC. 7p5s

fa2er isso+ cli6ue no boto CSaveC para atuali2ar a tabela.

$lterando a tabela com comandos SQL


$ambm poss%vel alterar uma tabela com comandos SQL. =ara isso+ use o comando 7L$;0 $7FL;. 7bai4o ser/ mostrada uma sinta4e simples deste procedimento& Sinta(e@
7L$;0 $7FL; (bancoDdados.(o"ner.**nomeDtabela j (7L$;0 COL.,# nomeDcoluna jnovoDtipoDdeDdados (Apreciso(+ escala*B* \ 7-- jnomeDcoluna dadosDcoluna \ (!'$H CH;CI \ !'$H #OCH;CI*l

Onde& 6ancoAdados o nome do banco de dados a 6ue a tabela pertence. ;ssa op o opcional+ ela ser/ usada somente 6uando se estiver posicionado num determinado banco de dados se e dese:a e4cluir a tabela de outro banco de dados. nomeAta6ela o nome da tabela 6ue dese:a alterar. nomeAcoluna a coluna 6ue se 6uer alterar. novoAtipoAdeAdados o tipo de dados 6ue a coluna aceitar/ a partir de agora. 71

Apostila Microsoft SQL Server 7.0

!'$H CH;CI \ !'$H #OCH;CI ;specificam se os dados na tabela devem ou no ser validados contra uma nova ou reabilitada restri o TO0;'8# I;^ ou CH;CI. Se no especificada+ assume-se !'$H CH;CI para novas restri 1es e !'$H #OCH;CI para restri 1es reabilitadas. Ye:a mais sobre restri 1es. ;4emplo&
7L$;0 $7FL; Cliente 7-- ender varcharA?JB #.LL 8O 7L$;0 $7FL; Cliente 7L$;0 COL.,# C'-7-; Y70CH70 AP?B

=ara renomear uma coluna+ usa-se o procedimento spArename&


spDrename KCliente.enderK+ ;ndereco

>ota@ =erceba 6ue ao e4ecutar o comando acima+ voc3 recebe um aviso 6ue di2& CCuidado& ,udar 6ual6uer parte do nome de um ob:eto pode invalidar scripts e procedimentos arma2enados.

%riando um BScri'tB das tabelas


7lgumas tarefas so mais f/ceis de fa2er com os comandos C0;7$; $7FL;. =or e4emplo+ para recriar um banco de dados em outro servidor+ voc3 pode salvar um ar6uivo Aum scriptB contendo todos os comandos SQL C0;7$; $7FL; usados para criar suas tabelas. .m script em geral um ar6uivo contendo comandos SQL. Se voc3 no usou um comando SQL+ pode fa2er o pr5prio SQL Server gerar um script para voc3 a partir da tabela e4istente. =ara isso+ no ;nterprise ,anager+ cli6ue no nome da tabela com o boto direito+ e em C7ll tas9sC+ e depois em C8enerate SQL ScriptsC. =or en6uanto+ dei4e as op 1es default. Cli6ue em C=revie"C para ver como ficam os comandos. -epois cli6ue em CSave 7s...C para salvar o ar6uivo Script. Salve o ar6uivo com o nome Cliente Aa termina ao .SQL :/ colocada por padroB. Teche as :anelas. =ara e4ecutar esse script em outro servidor ou outro banco de dados+ basta abrir o SQL QuerL 7nalL2er A'niciar \ =rogramas \ ,icrosoft SQL Server G.J \ QuerL 7nalL2erB+ abrir o ar6uivo de script e e4ecut/-lo. =ara abrir o ar6uivo Script cli6ue em e procure o nome do ar6uivo. #ote 6ue voc3 pode tambm modificar os comandos do script para criar tabelas com colunas ligeiramente diferentes.

72

Apostila Microsoft SQL Server 7.0

$ambm poss%vel criar um script com todas as tabelas do banco de dados+ ou com todos os ob:etos. =ara isso+ d3 uma olhada em C-ocumentando a cria o de bancos de dadosC Averemos outros tipos de ob:etos mais tardeB.

De+inindo o'/es de bancos de dados


.ma por o de op 1es de bancos de dados podem ser definidas para cada banco de dados. 7penas o 7dministrador de Sistema AS7B ou o propriet/rio do banco de dados pode mudar estas op 1es. 7 mudan a destas op 1es s5 modificar/ o banco de dados atual; no afetar/ outros bancos de dados. 7s op 1es de bancos de dados podem serm modificadas com o procedimento arma2enado de sistema s'Mdbo'tion+ ou atravs do ;nterprise ,anager. O procedimento arma2enado s'Mdbo'tion s5 afeta o banco de dados atual+ mas para modificar op 1es a n%vel de servidor+ use o procedimento arma2enado de sistema s'Mcon+igure. -epois de fa2er alguma mudan a+ emitido automaticamente um chec9point+ de modo 6ue as mudan as so imediatas.

.'/es dis'on6veis
7 seguir+ temos uma lista das op 1es mais comuns de banco de dados. =ara maiores detalhes em cada uma das op 1es+ ve:a no Foo9s Online. 7s op 1es marcadas com um asterisco AdB indicam 6ue essa op o pode ser configurada pelo ;nterprise ,anager; caso contr/rio+ uma op o s5 alter/vel atravs de procedimentos arma2enados. N$>SI null de+ault Controla se o valor padro para todos os tipos de dados #.LL. 7 ,icrosoft p1e o padro em #O$ #.LL. Se esta op o estiver em $0.;+ o padro ser/ #.LL para o banco de dados. Quando se entrar com o comando C0;7$; $7FL;+ a no ser 6ue o criador indi6ue e4plicitamente #O$ #.LL+ a regra se aplicar/ tambm ] cria o da tabela. $>SI >ulls Quando em $0.;+ as compara 1es de #.LL com 6ual6uer valor vo retornar um #.LL. Quando em T7LS;+ apenas compara o de valores no-.nicode retornaro $0.; se e somente se ambos valores forem nulos. O padro para essa op o T7LS;. $>SI Darnings Quando em $0.;+ avisos de erro so e4ibidos+ 6uando ocorrerem condi 1es tais como diviso por 2ero ou valores nulos aparecerem em fun 1es de agrega o. =or padro+ T7LS;. Nautoclose Quando em $0.;+ o banco de dados fechado automaticamente 6uando o )ltimo usu/rio encerra a cone4o. 'sto muito )til para ambientes pe6uenos+ mas deve ser evitado nos casos em 6ue cone41es so constantemente feitas e encerradas. 7 6uantidade de carga adicional gerada pela abertura e fechamento de um banco de dados poe ter efeitos negativos em um ambiente de produ o. autos5rin! Quando em $0.;+ o SQL Server periodicamente redu2ir/ os ar6uivos do banco de dados se necess/rio. Ndbo use onlA Quando em $0.;+ apenas o dbo Apropriet/rio do banco de dadosB tem acesso ao banco de dados. .se esta op o 6uando estiver e4ecutando reparos nem bancos de dados. 73

Apostila Microsoft SQL Server 7.0

'ublis5ed .tili2ado para relica o+ 6uando pu6lished estiver em $0.;+ indica 6ue a publica o est/ habilitada. Colocar essa op o em T7LS; desabilita a publica o. Nread onlA Se $0.; indica 6ue o banco de dados somente para leitura. T7LS; permite acesso para leitura/escrita. Nrecursive triggers Quando $0.;+ permitido o disparo de gatilhos recursivos (recursive triggers*. Quando T7LS; Ao padroB+ gatilhos no podem disparar recursivamente. .m gatilho recursivo a6uele 6ue dispara na tabela 6ue o originou+ causando uma atuali2a o em outra tabela+ a 6ual causa uma atuali2a o na tabela 6ue originou o gatilho. Nselec into ) bul! co'A =ermite 6ue o banco de dados aceite a 1es no registradas em log+ tais como S;L;C$ '#$O e o utilit/rio FC= fa2em. Nsingle user =ermite 6ue apenas um usu/rio acesse o banco de dados. subscribed Quando em $0.;+ o banco de dados pode ser assinado para publica o. Ntorn 'age detection Se $0.;+ o SQL Server detectar/ leituras incompletas em disco+ e far/ com 6ue se:am marcadas. Quedas de energia ou outros defeitos podem causar essas leituras incompletas. ?runcate log on %5ec!'oint "Ntrunc1 Log on c5!'t1# Quando estiver em $0.;+ o SQL Server trunca o log de transa 1es toda ve2 6ue encontrar um chec9point. ;sta op o usada fre6uentemente para desenvolvimento+ fa2endo com 6ue o log de transa 1es no fi6ue cheio com tanta fre6u3ncia. Yoc3 no deve utili2ar esta op o em um sistema CrealC.

De+inindo o'/es do banco de dados com s'Mdbo'tion


=ara mudar as op 1es de um banco de dados com o procedimento arma2enado spDdboption+ fa a o seguinte& Sinta(e@
spDdboption (KbancoDdeDdadosK* (+Kop oK* (+KvalorK*

=or e4emplo&
spDdboption KpubsK+ Kread onlLK+ KtrueK

=ara ver o estado atual das op 1es do banco de dados 'ubs+ entre com o seguinte comando&
spDdboption KpubsK

$odas as op 1es 6ue estiverem ativadas so listadas.

De+inindo o'/es do banco de dados 'elo 4nter'rise Manager


Quando se utili2a o ;nterprise ,anager para configurar as op 1es do banco de dados+ voc3 s5 tem acesso a um subcon:unto Acerca de metadeB das op 1es realmente dispon%veis. =ara mudar op 1es do banco de dados com o ;nterprise ,anager+ fa a assim& R. ;4panda o grupo do servidor. P. ;4panda o servidor. O. ;4panda os bancos de dados. Q. Cli6ue com o boto direito no banco de dados 6ue voc3 6uer mudar+ e ento cli6ue em =ropriedades (=orperties *. 74

Apostila Microsoft SQL Server 7.0

?. Selecione as op 1es a mudar. S. Cli6ue em OI 6uando tiver acabado.

Veri+icando 'ro'riedades do banco de dados


7 seguir voc3 v3 alguns procedimentos arma2enados de sistema+ fre6uentemente utili2ados+ 6ue e4ibem informa 1es sobre bancos de dados e op 1es de bancos de dados. s'Mdbo'tion& como visto acima+ mostra todas as op 1es dispon%veis para o banco de dados em 6ue se estiver posicionado. s'M5el'db& informa 1es sobre todos bancos de dados em um servidor. Tornece nome do banco de dados+ tamanho+ propriet/rio+ '-+ data de cria o+ e op 1es. s'M5el'db nomeA6ancoAdeAdados& informa 1es sobre um banco de dados espec%fico apenas. Tornece nome do banco de dados+ tamanho+ propriet/rio+ '-+ data de cria o+ e op 1es. 7lm disso+ lista os ar6uivos para dados e log de transa 1es. s'Ms'aceused (nomeAo6<eto*& resumo do espa o de arma2enamento 6ue um banco de dados+ log de transa 1es+ ou ob:eto de banco de dados utili2a.

%onsidera/es 'ara mel5or gerenciamento


=ara 6ue voc3 possa trabalhar com mais tran6uilidade e efici3ncia com bancos de dados+ considere os seguintes fatos. =ara obter melhor desempenho e seguran a+ arama2ene o banco de dados e o log de transa 1es em discos f%sicos separados. -esabilite o cache de escrita nos controladores de disco+ a menos 6ue o mecanismo de cache de escrita se:a especificamente pro:etado para servidores de bancos de dados. Ta a bac9up do banco de dados master imdediatamente depois de cirar ou modificar bancos de dados. ;m geral+ uma boa idia fa2er bac9up dos bancos de dados regularmente. 8aranta 6ue voc3 tenha espa o suficiente para o log de transa 1es. Se voc3 ficar sem espa o+ voc3 no ser/ cpaa2 de modificar ou acessar seu banco de dados. =ara evitar ficar sem espa o+ fa a o seguinte& 7lo6ue espa o suficiente para acomodar o crescimento. ,onitore fre6uentemente o espa o total sendo usado. .se a op o de crescimento autom/tico para aumentar o espa o em disco automaticamente. Configure um alerta para te avisar 6uando o espa o dispon%vel no log de transa 1es este:a abai4o de P? por cento do espa o total do log de transa 1es.

4(cluso de bancos de dados


Yoc3 no pode e4cluir bancos de dados 6ue este:am& 7tualmente aabertos para leitura ou escrita por outro usu/rio. Sendo restaurados. =ublicando 6ual6uer de suas tabelas Aparte da replica o SQLB. Yoc3 tambm no pode e4cluir os seguintes bancos de dados& ,aster ,odel $empdb 75

Apostila Microsoft SQL Server 7.0

;mbora lhe se:a permitido e4cluir o banco de dados de sistema msdb+ voc3 no deve e4clu%-lo se usa ou pretende usar& 0eplica o SQL Server 7gent 7ssistente de cria o de p/ginas !eb Hist5rico de bac9ups Servi os de transforma o de dados Quando e4cluir um banco de dados+ considere os seguintes fatos& Com o mtodo SQL -0O= -7$7F7S;+ voc3 pode e4cluir v/rios bancos de dados de uma ve2. O ;nterprise ,anager s5 lhe permite e4cluir um banco de dados de cada ve2. -epois 6ue voc3 e4cluir um banco de dados+ 6ual6uer '- de login 6ue usava o banco de dados e4clu%do como seu banco de dados padro+ usar/ agora o banco de dados master. Yoc3 deve S;,=0; fa2er bac9up do banco de dados master+ sempre 6ue 6ual6uer novo banco de dados for adicionado ou e4clu%do.

Documentao dos 'assos de criao de bancos de dados no SQL Server


-ocumentar os passos de cria o de bancos de dados SQL Server pode ser )til por diversas ra21es+ mas claro 6ue a principal e mais motivadora o fato de ter um bac9 up do trabalho 6ue voc3 fe2. 'sso no necessariamente vai lhe prevenir de perdas de dados+ mas vai salvar seu modelo+ e um modelo de banco de dados uma coisa terr%vel a se perder. O SQL Server tem um gerador de script 6ue torna f/cil para voc3 documentar+ e se necess/rio reconstruir+ seu banco de dados. O gerador de scripts pode construir o banco de dados e os ob:etos criados no banco de dados. Yoc3 tem a op o de selecionar desde todos at um )nico ob:eto. Yoc3 pode pegar um script de um banco de dados e rod/-lo em outro para criar c5pias e4atas de procedimentos arma2enados+ regras+ gatilhos+ etc. Yoc3 pode gerar scripts para os seguintes ob:etos& $abelas ($ables* =rocedimentos arma2enados (Stored procedures* 8atilhos ($riggers* fndices ('nde4es* Yis1es (Yie"s* .su/rios e 8rupos (.sers and 8roups* $ipos de dados definidos pelo usu/rio (.ser-defined data tLpes* Logins 0egras (0ules* -efault $abelas-chave / -0' O es6uema pode ser salvo em um ar6uivo )nico ou voc3 pode 6uerer divid%-lo baseado em ob:etos. 'ndependentemente do seu mtodo+ voc3 no tgem mais uma boa desculpa para um banco de dados no documentado.

76

Apostila Microsoft SQL Server 7.0

Gerando um scri't a 'artir do 4nter'rise Manager


R. P. O. Q. ?. ;4panda o grupo de servidores. ;4panda o servidor. ;4panda os bancos de dados. Cli6ue com o boto direito no banco de dados escolhido+ e selecione 7ll $as9s. Selecione 8erar Scripts SQL (8enerate SQL Scripts*+ como indicado abai4o.

S. Selecione os ob:etos 6ue voc3 dese:a criar da :anela 6ue aparece a seguir+ mostrada abai4o&

77

Apostila Microsoft SQL Server 7.0

Yoc3 pode prever o ar6uivo primeiro ou simplesmente clicar em OI para salv/-lo em um ar6uivo.

O - %onsultando Dados
Viso Geral do ?ransact-SQL $ Sinta(e do S4L4%? Mani'ulando 4('ress/es %ondi/es de 7es,uisa .utros &ecursos

Objetivos: - ;ntender a diviso de comandos da linguagem $ransact-SQL; - 7prender a usar o comando S;L;C$ e suas v/rias op 1es para fa2er consultas aos dados.

$ Sinta(e do S4L4%?
O comando S;L;C$ recupera dados de uma ou mais tabelas. 7 sua sinta4e mais simples pode ser resumida da forma& Sinta(e@
S;L;C$ listaAdeAcolunas T0O, listaAdeAta6elas !H;0; condiBes

Onde 78

Apostila Microsoft SQL Server 7.0

7 listaAdeAcolunas especifica 6uais colunas sero retornadas como resultado+ separadas por v%rgulas ou um asterisco AdB 6ue indica todas as colunas da tabela. 7 cl/usula T0O,+ com uma listaAdeAta6elas+ especifica 6uais tabelas sero consultadas. 7 cl/usula !H;0; especifica condiBes 6ue devem ser satisfeitas pelas linhas das tabelas. O comando Select pode ser utili2ado para mostrar o conte)do de vari/veis+ valores literais+ etc... Como e4emplo e4ecute o seguinte comando no QuerL 7nalL2er&
Select UUY;0S'O#

O resultado ser/&

UUYersion uma vari/vel global do SQL Server 6ue contm a verso do SQL Server utili2ado. =ara mostrar um valor literal digite o comando&
Select K$esteK

O resultado ser/ a palavra $este.

4(em'lo@ %onsultando ?odas as %olunas


=ara nossos e4emplos+ vamos usar o banco de dados pu6s+ um banco de e4emplo 6ue instalado pelo SQL Server. ;sse banco de dados arma2ena informa 1es sobre livros+ na tabela titles e sobre autores de livros+ na tabela authors Aentre outras coisasB. ;4ecute o QuerL 7nalL2er e se conecte ao servidor como CsaC. #a lista C-FC+ selecione CpubsC. -igite e e4ecute o seguinte comando&
select d from authors

O resultado ir/ mostrar todas as colunas e todas as linhas da tabela KauthorsK Aou se:a+ todo o seu conte)doB+ como abai4o Aalgumas linhas e colunas foram omitidasB&

79

Apostila Microsoft SQL Server 7.0

#ote a mensagem CPO ro"AsB affectedC (PO linhas afetadas*. 'sso indica 6uantas linhas foram retornadas pelo S;L;C$. Yoc3 poderia escolher ver os resultados em uma grade+ ao invs de em modo te4to. =ara isso basta selecionar+ clicando na seta ] direita no %cone+ a op o C0esults in 8ridC ACtrle-B. Caso voc3 no 6ueira selecionar na lista K-FK o banco de dados a 6ue a tabela 6ue dese:a procurar pertence+ ser/ necess/rio indicar no comando a 6ual banco de dados a tabela pertence+ e o comando seria o seguinte&
select d from pubs..authors

#essa tabela de e4emplo+ a coluna KauDfnameK o primeiro nome do autor+ KauDlnameK o sobrenome (last name* e KauDidK o n)mero de identifica o. 7gora suponhamos 6ue voc3 6uer consultar apenas essas tr3s primeiras colunas+ omitindo a informa o de telefone AphoneB e endere o AaddressB. O KdK no comando acima especifica 6ue todas as colunas da tabela so retornadas+ mas voc3 pode listar s5 as 6ue so dese:adas. Cli6ue na p/gina QuerL+ e altere o comando anterior para o seguinte&
select auDid+ auDfname+ auDlname from authors

;4ecute o comando. 7gora apenas as colunas KauDidK+ KauDfnameK e KauDlnameK so retornadas+ nessa ordem& 80

Apostila Microsoft SQL Server 7.0

#ote 6ue a ordem das colunas no precisa ser a mesma ordem presente na defini o da tabela.-e fato+ na maioria das aplica 1es bem constru%das+ a ordem das colunas na tabela no tem a menor importZncia. Yoc3 tambm pode mudar o cabe alho das colunas retornadas+ criando um alias de coluna. ;4ecute o seguinte comando&
select auDid 'dentif+ auDfname #ome+ auDlname Sobrenome from authors

O resultado ser/ o mesmo do comando anterior+ mas a coluna KauDidK aparece como 'dentif+ KauDfnameK como #ome etc.

7 palavra reservada as pode ser utili2ada para indicar um alias+ mas opcional. =or e4emplo&
select auDid as 'dentif+ auDfname as #ome+ auDlname as Sobrenome from authors

3sando %ondi/es
Os comandos 6ue :/ usamos no t3m a cl/usula !H;0;. #esse caso+ todas as linhas da tabela so retornadas. Se o !H;0; estiver presente+ ele especifica uma condi o 6ue seleciona as linhas+ e apenas as 6ue satisfa2em essa condi o sero mostradas. =or e4emplo+ se 6uisermos os autores 6ue moram na Calif5rnia+ podemos consultar as linhas cu:a coluna KstateK AestadoB tem o valor KC7K&
select auDfname+ auDlname+ citL+ state from authors "here statekKC7K

O resultado ser/&

81

Apostila Microsoft SQL Server 7.0

#ote 6ue o resultado mostra apenas R? linhas AR? ro"s affectedB e no PO+ 6ue o total da tabela. 7s linhas 6ue aparecem so apenas as 6ue satisfa2em a consulta. ;4istem v/rios tipos de condi 1es de pes6uisa+ como veremos.

Mani'ulando e('ress/es
.m comando S;L;C$ pode retornar nas colunas de resultado uma coluna da tabela+ ou um valor calculado. =or e4emplo+ a tabela titles contm os t%tulos de livro AtitleB e os pre os de cada um ApriceB. Se 6uisermos ver como fica o pre o de cada um ap5s um aumento de RJi+ pode ser feito o seguinte&
select price =re o + Aprice d R.RB C=re o com RJi de aumentoC+ title from titles

#ote 6ue C=re o com RJi de aumentoC o nome do cabe alho da e4presso Aprice d R.RB+ como o nome colocado possui espa os+ foi necess/rio coloca-lo entre aspas. Ou se:a+ a segunda coluna + cu:o nome C=re o com RJi de aumento C mostra o resultado de price d R.R para cada linha. Yoc3 pode tambm usar v/rios operadores em e4press1es com colunas numricas& adi o AeB+ subtra o A-B+ multiplica o AdB+ diviso A/B e m5dulo AiB. O m5dulo s5 pode ser usado com tipos inteiros e calcula o resto da diviso de dois n)meros inteiros A;4.& RO i Q k RB.

Fun/es matem<ticas
7lm de operadores+ voc3 pode usar fun 1es matem/ticas do SQL Server+ por e4emplo& 7FSAvalorB retorna o valor absoluto Asem sinalB de um item. =O!;0Avalor+pB retorna o valor elevado ] pot3ncia p. 0O.#-Avalor?nB arredonda o valor para n casas decimais. SQ0$ AvalorB retorna a rai2 6uadrada do valor especificado. =' valor constante O.RQR?>P?SO?@>G>O =ara outras fun 1es+ consulte o help do $ransact-SQL em K,ath functionsK. =or e4emplo+ para arredondar o valor do pre o de cada livro para duas casas decimais+ pode ser feito o seguinte&
Select price =re o + 0O.#-Aprice+ RB C=re o com R casa

82

Apostila Microsoft SQL Server 7.0 decimalC+ title $%tulo from titles

O resultado ser/&

Fun/es de caracteres
Yoc3 pode usar fun 1es para manipular dados do tipo caracter Achar ou varcharB+ por e4emplo+ para pegar uma sub-string de uma se6g3ncia de caracteres. ; voc3 pode usar o operador e para concatenar dois valores de tipo caracter. =or e4emplo+ digite o seguinte comando&
select auDfname e K K e auDlname K#ome completoK+ citL e K+ K e state KCidadeK from authors

O resultado ser/&

83

Apostila Microsoft SQL Server 7.0

O 6ue fi2emos foi concatenar o primeiro nome e segundo nome do autor+ inserindo um espa o no meio AauDfname e K K e auDlnameB+ para gerar a coluna #ome completo e depois :untar o nome da cidade com o nome do estado+ inserindo uma v%rgula AcitL e K+ KestateB. ;4istem v/rias fun 1es de manipula o de strings 6ue podem ser usadas para outras tarefas+ por e4emplo& 7SC''AcaractereB retorna o c5digo 7SC'' de um caractere. CH70AinteiroB retorna o caractere+ dado o seu c5digo 7SC'' LO!;0Ae@prB converte para min)sculas .==;0Ae@prB converte para mai)sculas L$0',Ae@prB retira espa os ] es6uerda 0$0',Ae@prB retira espa os ] direita 0;=L'C7$;Ae@pr+ nB repete uma e4presso n ve2es S.FS$0'#8Ae@pr?in7cio?tama e4trai uma parte de uma string desde in7cio e com tamanho nhoB caracteres 0'8H$Ae@pr?nB retorna n caracteres ] direita da string 0;Y;0S;Ae@prB inverte uma string CH70'#-;<AGcaractereG? retorna a posi o de um caractere dentro da string e@prB S=7C;AnB retorna uma string com n espa os converte um valor numrico para string+ formatado com n S$0AnHmero?n?dB caracteres na parte inteira Aantes da v%rgulaB e d casas decimais depois da v%rgula. S$.TTAe@prI?in7cio?tamanho? substitui em e@prI+ os caracteres desde in7cio at tamanho por e@prJB e@prJ -7$7L;#8$HAe@prB retorna a 6uantidade de caracteres em e@pr =or e4emplo digite o seguinte comando&
Select substringAtitle+ R+ OJB $%tulo + strAprice+ ?+ RB =re o from titles

O 6ue fi2emos foi mostrar at OJ caracteres da coluna title e mostramos a coluna price com no m/4imo ? n)meros antes da v%rgula e R casa decimal depois da v%rgula. ;nto o resultado ser/&

-igite o seguinte comando &


Select 0eplicateAKaK+ RJB

Com este comando a letra a foi mostrada RJ ve2es. 84

Apostila Microsoft SQL Server 7.0

Fun/es de Data)5ora
O tipo datetime+ como vimos+ arma2ena datas e horas. 7lgumas fun 1es trabalham com esse tipo de dados& -7$;7--Aparte?nHmero?d adiciona um certo n)mero de dias Aou meses+ anos etc.B ] data ataB -7$;-'TTAparte?dataI?dat subtrai as duas datas AdataJ - dataIB+ retornando um resultado em aJB dias+ meses etc. dependendo de datepart -7$;=70$Aparte?dataB retorna a parte especificada da data -7$;#7,;Aparte?dataB retorna o nome por e4tenso da parte especificada 8;$-7$;AB retorna a data e hora atuais #as fun 1es acima+ o argumento parte? especifica 6ual parte da data usar. ;le pode ser um dos seguintes valores& LL o ano 66 o trimestre mm o m3s dL o dia do ano AR-OS?B dd o dia do m3s "9 o n)mero da semana AJ-?RB d" o dia da semana AdomingokR+ segundakP+...B hh a hora AJ-POB mi os minutos ss os segundos ms os milisegundos =or e4emplo+ digite o seguinte comando&
Select pubdate+ datepartALL+ pubdateB 7no from titles

O resultado ser/& O 6ue fi2emos foi mostrar o campo pubdateA-ata de publica o do livroB e o de publica o do livro. =ara mostrar o ano utili2amos a fun o de data datepart .

%onverso de dados
7 fun o CO#Y;0$ permite converter de um tipo de dado para outro. 7 sua forma geral de uso & CO#Y;0$AtipoAdeAdados+ valorB =or e4emplo&
select convertAcharARJB+auDfnameB e K Ke convertAcharARJB+auDlnameB from authors

7o e4ecutar este comando o resultado ser/&

85

Apostila Microsoft SQL Server 7.0

Com valores datetime+ convert pode ter um parZmetro a mais+ 6ue especifica o formato de data a ser usado. Os formatos mais usados so O Apadro brasileiro dd/mm/aaB+ RJO Add/mm/aaaaB e os padr1es americanos R Amm/dd/LLB e RJR Amm/dd/LLLLB. O default J+ 6ue mostra datas como& Man JR R>>G JR&RO&PO =, =or e4emplo+ para ver a data de ho:e em formato brasileiro+ e4ecute&
select convertAchar+getdateAB+RJOB

=ara converter valores numricos em char pode ser utili2ado a fun o CO#Y;0$+ por e4emplo&
select convertAchar+pubDidB from titles

%ondi/es de 'es,uisa
Como vimos+ a cl/usula !H;0; permite selecionar 6uais as linhas da tabela a serem inclu%das no resultado. ;4istem v/rias formas de montar uma cl/usula !H;0;+ usando um dos seguintes elementos& Operadores de compara=o: k igual a b maior 6ue n menor 6ue bk ou `n maior ou igual Ano menorB nk ou `b menor ou igual Ano maiorB nb ou `k diferente 1ai@as: Listas: -asamento de padrBes: 2alores nulos& -om6ina=o de condiBes: F;$!;;# valor-ini 7#- valorl-+in '# AlistaB L'I; padr=o 'S #.LL+ 'S #O$ #.LL 7#-+ O0+ #O$

3sando o'eradores
7s condi 1es mais simples so formadas usando operadores de compara o+ como vimos no e4emplo anterior&
select auDlname+ citL from authors "here state k KC7K

86

Apostila Microsoft SQL Server 7.0

#ote 6ue constantes do tipo char Aou varcharB+ bem como datas+ devem ser colocadas entre ap5strofos AKB. Se 6uisermos fa2er o contr/rio+ isto + procurar os autores 6ue #oO so da Calif5rnia+ podemos fa2er&
select auDlname+ citL from authors "here state nb KC7K

#ote 6ue di+erente tambm pode ser representado por `k.

3sando +ai(as
#a tabela titles+ para cada livro+ est/ guardada a sua data de publica o na coluna KpubdateK. Se 6uisermos saber 6uais os livros publicados no ano de R>>R+ podemos fa2er a consulta&
select pubdate+ title from titles "here pubdate bet"een KR/R/>RK and KRP/OR/>RK

Onde F;$!;;#...7#-... seleciona os valores de KpubdateK 6ue esto dentro de uma determinada fai4a. =ara fa2er o contr/rio+ bastaria usar #O$ F;$!;;# Amas nesse caso no to eficiente a consultaB.

3sando listas
Yoc3 pode selecionar valores de acordo com uma lista. Se o valor pertence ] lista+ a linha ser/ inclu%da no resultado. =or e4emplo&
select auDlname+ citL+ state from authors "here state in AK.$K+KC7KB

O resultado contm as linhas onde KstateK tem um dos valores K.$K ou KC7K. ;6uivale ao mesmo 6ue usar uma condi o composta&
"here state k K.$K O0 state k KC7K

=ara retornar os valores 6ue n=o esto na lista+ pode-se usar #O$ '#.

%asamento de 'adr/es
O operador L'I; (como* fa2 casamento de padr1es. .m padr=o uma string contendo caracteres 6ue podem ser combinados com parte de outra string. =or e4emplo+ o caractere i em um padro representa 6ual6uer 6uantidade de caracteres. =or e4emplo+ para obter todos os autores cu:o AprimeiroB nome come a com 7+ use&
select auDfname+ auDlname from authors "here auDfname li9e K7iK

=ara obter todos os nomes 6ue contm as letras KenK no meio Aou no in%cio ou no fimB+ use&
select auDfname+ auDlname from authors "here auDfname li9e KieniK

Outro caractere para usar em padr1es o sublinhado ADB. ;le combina com um )nico caractere. =or e4emplo+ se nos seus dados e4istem pessoas com nome KSousaK ou KSou2aK+ voc3 pode usar& L'I; KisouDaiK. Tinalmente+ poss%vel usar os colchetes para combinar com uma determinada fai4a de caracteres. =or e4emplo+ L'I; K(CI*iK encontra os nomes 6ue iniciam com C ou I e L'I; K(7-;*iK os 6ue come am com as letras de 7 at ;. M/ L'I; K(pY*iK encontra os nomes 6ue n=o come am com Y Ao caractere p indica noB. #ote 6ue as compara 1es feitas com L'I; dependem da ordem de classifica o (sort order* escolhida durante a instala o do SQL Server. Se foi usada a ordem Caccent-insensitiveC+ como foi recomendado+ ele consegue procurar ignorando acentos. =or e4emplo+ L'I; KcamaraK vai encontrar tambm KCZmaraK.

7rocurando valores nulos


O valor #.LL no SQL Server indica Cno informadoC ou CdesconhecidoC. ;le inserido numa coluna 6uando a6uele valor no conhecido ou no se aplica. =raticamente 6ual6uer coluna pode ter valores #.LL+ e4ceto se tiver sido declarada como #O$ #.LL na cria o da tabela.

87

Apostila Microsoft SQL Server 7.0

#.LL no tratado como outros valores. ;specialmente+ 6ual6uer opera o com #.LL tem como resultado #.LL e 6ual6uer compara o com #.LL tem resultado T7LSO. =or e4emplo+ ve:a as duas consultas a seguir&
select price+ title from titles "here price k R>.>> select price+ title from titles "here price nb R>.>>

7lgumas linhas da tabela KtitleK t3m KpriceKk#.LL. ;ssas linhas no vo aparecer nem na primeira nem na segunda consulta+ por6ue #.LLkR>.>> falso e #.LLnbR>.>> tambm falso. =ara ver essas linhas com valores nulos+ use&
select price+ title from titles "here price is #.LL

=ara ver as linhas onde o valor est/ preenchido Ano #.LLB+ use&
select price+ title from titles "here price is #O$ #.LL

.sar Kprice k #.LLK funciona no SQL Server+ mas no compat%vel com o padro 7#S'.

Iuntando v<rias condi/es


Yoc3 pode fa2er condi 1es compostas com 7#-+ O0 ou #O$. O operador 7#- A;B liga duas condi 1es e retorna verdadeiro apenas se am6as so verdadeiras e falso se pelo menos uma delas falsa. M/ O0 AO.B retorna verdadeiro se pelo menos uma delas for verdadeira e falso se ambas forem falsas. O operador #O$ A#oOB inverte uma condi o. =or e4emplo&
select title+ pubDid+ price from titles "here Atitle li9e K$iK O0 pubDid k KJ@GGKB 7#- Aprice b WRS.JJB

'sso retorna os livros onde& Am6as as condi 1es R e P so verdadeiras& R-0ma das seguintes verdadeira o t%tulo AKtitleKB come a com $+ .3 o c5digo da editora AKpubDidKB KJ@GGK 4 P- o pre o AKpriceKB maior 6ue RS.JJ Os par3nteses indicam a preced3ncia das condi 1es. #a falta de par3nteses+ o operador #O$+ se presente+ aplicado primeiro+ depois as condi 1es com 7#- so agrupadas+ depois as condi 1es com O0 so agrupadas. Yoc3 pode usar par3nteses+ mesmo se no necess/rios+ para tornar a e4presso mais leg%vel.

.utros recursos
#o comando S;L;C$+ a cl/usula -'S$'#C$ elimina valores duplicados no resultado e ordena a lista de resultados. =ara apenas ordenar por uma ou mais colunas+ use O0-;0 F^. N poss%vel tambm combinar o resultado de dois comandos S;L;C$ em um )nico con:unto com o operador .#'O#.

4liminando valores du'licados


Se voc3 6uiser saber 6uais as cidades e estados nas 6uais mora algum autor+ pode usar a seguinte consulta&
select citL+ state from authors

88

Apostila Microsoft SQL Server 7.0

,as note 6ue algumas cidades+ como Oa9land+ C7+ aparecem v/rias ve2es. =ara eliminar duplica 1es+ use a cl/usula -'S$'#C$. O SQL leva em conta as duas colunas em con:unto+ para remover duplicatas.

select distinct citL+ state from authors

O resultado ser/& #ote 6ue o resultado ter/ apenas RS linhas. O SQL Server ordena os dados implicitamente+ para poder eliminar as duplicatas.

.rdenando resultados
=ara ver o resultado numa ordem particular+ use a cl/usula O0-;0 F^. Se estiver presente+ deve ser a )ltima cl/usula do comando S;L;C$. =or e4emplo+ para ver os livros em ordem de pre o&
select title+ tLpe+ price from titles order bL price

Yoc3 pode indicar ap5s o nome da coluna+ se a ordem ascendente ou descendente+ por e4emplo&
select title+ tLpe+ price from titles order bL tLpe asc+ price desc

Se nem 7SC nem -;SC estiverem presentes+ o default 7SC. ;m ve2 de colocar o nome da coluna+ voc3 pode usar o n)mero relativo AR+P+...B. 7 mesma consulta anterior poderia ser&
select title+ tLpe+ price from titles order bL P asc+ O desc

3nio de con:untos
O comando S;L;C$ retorna um con<unto de linhas+ e permite tambm opera 1es com a no o matem/tica de con:untos. =or e4emplo+ o resultado de dois comandos S;L;C$ pode ser combinados com o operador .#'O#. Os dois comandos podem at mesmo tra2er dados de tabelas diferentes+ desde 6ue com o mesmo n)mero de colunas+ e tipos de dados compat%veis para cada coluna correspondente de um com o outro. =or e4emplo+ no banco de dados pu6s+ a tabela authors contm informa o sobre cada autor+ o 6ue inclui a cidade e estado onde ele mora Acolunas cit& e stateB. 7 tabela pu6lishers contm informa o sobre as editoras e suas cidades e estados. =ara sabermos o con:unto de todas as cidades onde e4istem autores ou editoras+ pode ser feita uma unio dos dois con:untos+ com&
select citL+ state from authors

89

Apostila Microsoft SQL Server 7.0 union select citL+ state from publishers

#ote 6ue na unio de dois con:untos+ os elementos repetidos so eliminados+ como 6uando se usa o -'S$'#C$. O resultado tambm aparece em ordem crescente+ pois o SQL Server ordena os resultados antes de eliminar repeti 1es. Se voc3 6uer ordenar de modo diferente os resultados da unio+ usando O0-;0 F^+ essa cl/usula s5 pode aparecer no segundo comando S;L;C$+ ou se:a+ no final dos comandos+ por e4emplo&
select citL+ state from authors union select citL+ state from publishers order bA state

$lterao de Dados
Inserindo Lin5as $tuali8ando Lin5as 4(cluindo Lin5as

Objetivos: - 7prender a inserir + atuali2ar e e4cluir linhas.

Inserindo lin5as
O comando '#S;0$ insere linhas em uma tabela. 7 forma mais simples do comando '#S;0$ insere somente uma linha + dados os valores. Sinta(e
'#S;0$ ('#$O* nomeDtabela AcolunasB Y7L.; AvaloresB

Onde& nomeDtabela o nome da tabela 6ue dese:a incluir os dados. colunas o nome das colunas da tabela 6ue dese:a acrescentar os dados. valores o conte)do de cada coluna. ;4emplos& Yamos usar a tabela KfuncionarioK+ do banco de dados ;4emplo+ criada anteriormente+ para inserir linhas. #a :anela SQL QuerL $ool+ selecione em CF-C o banco de dados ;4emplo. -igite o seguinte&
insert into Tuncionario values AR+ K=rimeiro Tuncion/rioK+ P+ RPP+ POQ.PO+ KJR/JR/R>>@K+ KJR/JR/R>>@K+ K,KB

#esse caso+ so informados os valores de todas as colunas da tabela+ na ordem em 6ue elas foram definidas na tabela. ,as poss%vel tambm inserir dados parciais de apenas algumas colunas. =ara testar+ digite os seguintes comandos e depois e4ecute&
insert into Tuncionario ACodTuncionario+ #ome+ Cod-epartamento+ Se4o+ Salario+ -ata7dmissaoB values AP+ KSegundo Tuncion/rioK+ R+ KTK+ QOSJ.JJ+ KJR/JR/R>>SKB insert into Tuncionario ACodTuncionario+ #ome+ Cod-epartamento+ Se4o+ Salario+ -ata7dmissao+ 0amalB values AO+ K$erceiro Tuncion/rioK+ R+ KTK+ R?JJ.JJ+ KRP/OJ/R>>?K+ RPPB

90

Apostila Microsoft SQL Server 7.0 insert into Tuncionario ACodTuncionario+ #ome+ Cod-epartamento+ Se4o+ Salario+ -ata7dmissaoB values AQ+ KQuarto Tuncion/rioK+ R+ K,K+ R?JJ.OQ+ KRJ/OJ/R>>SKB insert into Tuncionario ACodTuncionario+ #ome+ Cod-epartamento+ Se4o+ Salario+ -ata7dmissaoB values A?+ KQuinto Tuncion/rioK+ O+ K,K+ ?JJ.OQ+ KJG/OJ/R>>GKB insert into Tuncionario ACodTuncionario+ #ome+ Cod-epartamento+ Se4o+ Salario+ -ata7dmissaoB values AS+ KSe4to Tuncion/rioK+ O+ KTK+ RJJJ.OQ+ KJ@/OJ/R>>?KB insert into Tuncionario ACodTuncionario+ #ome+ Cod-epartamento+ Se4o+ Salario+ -ata7dmissaoB values AG+ KStimo Tuncion/rioK+ O+ KTK+ >JJ.OQ+ KJR/JR/R>>GKB

#esse caso+ os nomes das colunas 6ue sero inseridas so especificados entre par3nteses ap5s o nome da tabela. 7 ordem no precisa ser a mesma das colunas na tabela. ,as a ordem dos valores em Y7L.;S corresponde ] ordem dos nomes de colunas informados. #esse caso+ se uma coluna omitida da lista+ o SQL Server fa2 o seguinte& X Se a coluna tem um valor default + o valor default inserido. X Caso contr/rio+ se a coluna permite valores #.LL+ ser/ inserido um #.LL. X Caso a coluna no tenha default e tenha sido criada como #O$ #.LL+ o SQL Server gera uma mensagem de erro e cancela a e4ecu o do comando. -igite agora KS;L;C$ d from TuncionarioK. Yoc3 ver/ 6ue os funcion/rios P + O e Q a data de cadastro a data de ho:e+ por6ue o default para essa coluna a fun o 8;$-7$;AB. ;m outros casos+ o valor da coluna ficou #.LL 6uando no informado. 7 palavra reservada -;T7.L$ insere o valor default da coluna. Como e4emplo e4ecute o seguinte comando&
insert into Tuncionario values A@+ KOitavo Tuncion/rioK+ P+ RPP+ SJJ.PO+ KJR/JR/R>>@K+ -;T7.L$+ K,KB

-igite agora KSelect d from funcionario "here codfuncionario k @K.Ser/ mostrado os dados do funcion/rio cu:o c5digo igual a @. O conte)do da data do cadastro a data de ho:e+ isto ocorreu devido ao seu valor default. #o acrescente nenhuma linha a mais na tabela de KfuncionarioK+ por6ue ela ser/ usada posteriormente nos nossos e4emplos. Caso acrescente o resultado dos e4emplos 6ue iremos utili2ar no ir/ coincidir. Yamos inserir alguns dados na tabela KdepartamentoK do banco de dados ;4emplo.;sta tabela possui tr3s colunas. 7 coluna Cod-eptSuperior indica o c5digo do departamento 6ue o departamento 6ue esta sendo cadastrado subordinado. ;4ecute os seguintes comandos&
insert into -epartamento Yalues AR+ K-iretoriaK+ JB insert into -epartamento Yalues AP+ K-epartamento 7dministrativoK+ RB insert into -epartamento Yalues AO+ K-epartamento =essoalK+ RB

#o acrescente nenhuma linha a mais na tabela de KdepartamentoK+ por6ue ela ser/ usada posteriormente nos nossos e4emplos. Caso acrescente o resultado dos e4emplos 6ue iremos utili2ar no ir/ coincidir. 7crescente dados para a tabela de clientes. Observe 6ue as colunas -ataCadastro e =a%s possuem valores -efault + as colunas C=T+ Cidade+ ;stado pode conter o valor null.

3sando I>S4&? com S4L4%?


Yoc3 tambm pode inserir o resultado de uma consulta S;L;C$ dentro de uma tabela. =ara testar+ crie uma nova tabela no banco de dados ;4emplo+ usando o ;nterprise ,anager Aou com o comando C0;7$; $7FL;B+ com o nome de CopiaCliente. 7 tabela dever/ ter as seguintes colunas& >ome ?i'o 91

Apostila Microsoft SQL Server 7.0

Codigo int #ome varcharA?JB =ara copiar as linhas P e Q da tabela Cliente+ use o seguinte comando&
insert into CopiaCliente select CodCliente+ #ome from Cliente "here CodCliente in AP+QB

Cada linha retornada pelo S;L;C$ interno ser/ inserida na tabela CopiaCliente. ;sse comando muito )til para copiar dados entre tabelas semelhantes. #ote 6ue nesse caso+ as regras 6ue vimos anteriormente ainda se aplicam+ a cada linha 6ue o comando est/ tentando inserir. 7s colunas da tabela de destino e os valores de resultado do S;L;C$ devem ser compat%veis+ ou se:a+ devem ter o mesmo tipo de dados ou tipos compat%veis e devem estar na mesma ordem Amas os nomes no precisam ser os mesmos+ como no caso de KCodClienteK e KCodigoKB. Se as duas tabelas fossem id3nticas+ poderia ser usado d no select em ve2 de uma lista de colunas. Se a tabela CopiaCliente tivesse colunas a mais+ alm de CodCliente e #ome+ teria de ser especificada a lista de colunas a ser inseridos+ como vimos anteriormente.

4(cluindo lin5as
O comando -;L;$; e4clui permanentemente uma ou mais linhas de uma tabela+ baseado em alguma condi o. Sinta(e
-;L;$; T0O, nomeDtabela !H;0; condicao

Onde& nomeDtabela o nome da tabela 6ue dese:a e4cluir os dados. condicao condi o para selecionar as dados 6ue dese:a e4cluir. =or e4emplo+ para e4cluir o cliente nm P ACodigo kPB da tabela CopiaCliente+ e4ecute o seguinte comando no banco de dados ;4emplo&
delete from CopiaCliente "here Codigo k P

#ote 6ue a e4cluso no pode ser desfeita.

3sando sub-consultas
7ssim como .=-7$;+ o comando -;L;$; tambm pode usar sub-consultas para e4cluir linhas baseado nos dados de outra tabela. =ara testar+ copie novamente as linhas de cliente para CopiaCliente e depois insira duas novas linhas em CopiaCliente+ como abai4o&
insert into CopiaCliente select CodCliente+ #ome from Cliente insert into CopiaCliente A?+ KCliente CincoKB insert into CopiaCliente AS+ KCliente SeisKB

7gora vamos apagar de CopiaCliente apenas as linhas 6ue e4istem na tabela Cliente. =ara isso+ use o comando abai4o&
delete from CopiaCliente "here Codigo in Aselect CodCliente from ClienteB

Lim'ando uma tabela


=ara e4cluir todas as linhas de uma tabela+ e4istem duas op 1es. .ma usar um comando -;L;$; sem condi o !H;0;&
delete from CopiaCliente

92

Apostila Microsoft SQL Server 7.0

Outra op o o comando $0.#C7$; $7FL;+ 6ue 6uase sempre mais r/pido 6ue o -;L;$;+ especialmente em tabelas grandes&
truncate table CopiaCliente

,as $0.#C7$; $7FL; no salva informa 1es no log de transa 1es+ o 6ue tem algumas conse6g3ncias com rela o a bac9ups+ como veremos.

P - %onsultas $vanadas
Dados de &esumo Iun/es de ?abelas Sub-consultas

Objetivos: - 7prender a gerar dados de resumo com fun 1es agregadas e 80O.= F^; - 7prender a consultar dados a partir de duas ou mais tabelas.

Dados de resumo
7lm da sinta4e b/sica do S;L;C$ 6ue :/ vimos+ alguns elementos a mais podem ser inclu%dos+ as cl/usulas 80O.= F^ e H7Y'#8& Sinta(e S;L;C$ listaAdeAcolunas T0O, listaAdeAta6elas !H;0; condiBes 80O.= F^ listaAdeAe@pressBes H7Y'#8 condiBes Como :/ vimos+ o !H;0; Ase presenteB separa as linhas 6ue satisfa2em as condi 1es iniciais. 7 cl/usula 80O.= F^ organi2a as linhas de resultado em grupos de acordo com os valores das e4press1es informadas. 7 cl/usula H7Y'#8 AopcionalB seleciona os grupos de acordo com os resultados. O resultado do S;L;C$...80O.= F^... tem uma linha para cada grupo+ 6ue pode conter valores de resumo Asomat5rio+ mdia+ contagem etc.B calculados dentro do grupo. Quando o 80O.= F^ est/ presente+ poss%vel usar +unBes agregadas+ 6ue calculam valores baseado nas linhas de um grupo e geram valores de resumo.

4(em'lo
=ara saber 6uantas linhas e4istem na tabela G+uncionarioG do banco de dados ;4emplo+ pode-se usar a fun o agregada CO.#$AdB&
select countAdB from funcionario

O resultado ser/ @. Quando a cl/usula 80O.= F^ omitida+ como nesse e4emplo+ todas as linhas da tabela so agrupadas para formar uma linha de resultado. Yoc3 pode tambm acrescentar uma condi o&
select countAdB from funcionario "here ramal is not null

93

Apostila Microsoft SQL Server 7.0

#este caso o resultado O. ;stamos contando 6uantos funcionarios tem a coluna 0amal diferente de null. Quando se utili2a o 80O.= F^ com o nome de uma coluna+ os resultados so agregados por essa coluna. =or e4emplo+ para saber 6uantos funcionarios e4istem por departamento&
select countAdB KQuantidade Tuncion/rioK+ Cod-epartamento from funcionario group bL Cod-epartamento

O resultado ser/&

Ou se:a+ todos os tr3s funcion/rios cu:o c5digo do departamento R foram agrupados para gerar uma s5 linha de resultado. -epois todos os funcion/rios com coddepartamento k O Acaso houvesse algum funcion/rio cadastrado com c5digo departamento k P+ viria logo ap5s o de c5digo departamento k RB e assim por diante. #o resultado mostrada a coluna KcoddepartamentoK A6ue foi usada no 80O.= F^ para definir os gruposB e o resultado da fun o CO.#$AdB+ 6ue a contagem de elementos de cada grupo.

Fun/es agregadas
7lm da fun o CO.#$+ e4istem outras fun 1es agregadas 6ue podem ser usadas para fa2er opera 1es sobre os elementos do grupo& Calcula o valor mdio da e4presso e@pr dentro do grupo. 7 e4presso pode ser um nome de coluna ou calculada a partir de 7Y8Ae@prB colunas e/ou constantes. A=or e4emplo+
7Y8 AsalariodR.RB

B Conta 6uantos valores e4istem da e4presso dada dentro do grupo CO.#$Ae@prB Ase e@pr for #.LL para uma linha+ a linha no inclu%da na contagemB. CO.#$AdB Conta 6uantas linhas e4istem dentro do grupo. ,7<Ae@prB 0etorna o m/4imo valor de e@pr dentro do grupo. ,'#Ae@prB 0etorna o m%nimo valor de e@pr dentro do grupo. S.,Ae@prB 0etorna o somat5rio da e4presso dentro do grupo. 7s fun 1es 7Y8 e S., podem ser usadas apenas com dados numricos. 7s outras podem ser usadas com 6ual6uer tipo de coluna. 7s fun 1es S.,+ 7Y8 e CO.#$Ae@prB permitem especificar tambm o operador -'S$'#C$+ 6ue indica para considerar apenas os valores distintos. =or e4emplo+ a tabela KfuncionariosK do 94

Apostila Microsoft SQL Server 7.0

banco de dados ;4emplo contm informa o sobre 6ual departamento este funcion/rio trabalha. =ara saber 6uais os departamentos 6ue t3m ao menos um funcionario + e4ecute o seguinte comando&
select countAdistinct coddepartamentoB from funcionario

O resultado O+ o n)mero de valores distintos de KdepartamentosK. Sem usar -'S$'#C$+ o resultado seria @ Ao n)mero de linhas da tabela KfuncionarioKB.

Outro e4emplo usando a tabela KfuncionarioK& para saber o total de sal/rios pagos por cada departamento+ pode-se usar 80O.= F^ e a fun o S., calculando o somat5rio da coluna KSalarioK&
select coddepartamento -epartamento+ SumASalarioB K$otal Sal/rioK from funcionario group bL coddepartamento

O resultado ser/&

Detal5es do G&.37 BQ
7 cl/usula 80O.= F^ agrupa valores baseado em uma ou mais colunas. #o )ltimo S;L;C$ acima+ group bL coddepartamento significa 6ue todas as linhas 6ue t3m o mesmo valor da coluna KcoddepartamentoK sero agrupadas em uma s5. .ma fun o agregada+ como S.,+ CO.#$+ 7Y8 calcula valores sobre todos os elementos do grupo. .ma linha de resumo gerada para o grupo+ contendo o valor representante do grupo+ KcoddepartamentoK e o resultado de S.,ASalarioB. #ote 6ue as colunas de resultado da cl/usula S;L;C$ Aa lista de colunas ap5s o S;L;C$B podem ser apenas& - .ma coluna presente na lista do 80O.= F^ O. - .m valor gerado por uma fun o agregada Outras colunas no podem ser inclu%das no resultado+ por6ue teriam valores diferentes para cada linha do grupo.

3sando a cl<usula -$VI>G


7p5s feito o agrupamento+ pode-se usar a cl/usula H7Y'#8 para selecionar 6uais os grupos a serem inclu%dos no resultado. =or e4emplo+ para selecionar os departamentos 6ue pagam mais 6ue RJJJ.JJ+ podese fa2er&
select coddepartamento -epartamento+ sumASalarioB KSal/rio $otalK from funcionario

95

Apostila Microsoft SQL Server 7.0 group bL coddepartamento having sumASalarioB b RJJJ.JJ

#ote 6ue as cl/usulas !H;0; e H7Y'#8 so semelhantes. ,as !H;0; seleciona as linhas da tabela 6ue iro participar da gera o do resultado. ;ssas linhas sero agrupadas e depois H7Y'#8 aplicado ao resultado de cada grupo+ para saber :uais grupos vo aparecer no resultado. #as condi 1es usadas por H7Y'#8 s5 podem aparecer valores 6ue se:am os mesmos em todos os elementos do grupo.

Iun/es de tabelas
.m comando S;L;C$ tambm pode fa2er uma consulta 6ue tra2 dados de duas ou mais tabelas. ;sse um processo chamado de <un=o (:oin*. 7s tabelas t3m uma coluna em comum 6ue usado para fa2er as :un 1es. 7ntes de e4ecutar os e4emplos mostrados abai4o+ vamos inserir um departamento na tabela KdepartamentoK 6ue neste caso no ter/ nenhum funcion/rio relacionado. ;4ecute o seguinte comando&
insert into departamento values AQ+ KContabilidadeK+ PB

=or e4emplo+ no banco de dados E@emplo+ a tabela KdepartamentoK contm dados de departamentos. Cada departamento tem um n)mero de identifica o )nico+ KCod-epartamentoK. #a tabela KfuncionarioK esto os dados dos funcion/rios. =ara identificar o departamento do funcion/rio+ a tabela KfuncionarioK tem tambm uma coluna KCod-epartamentoK 6ue pode ser usada para procurar na tabela KdepartamentoK. =or e4emplo+ digite&
select d from funcionario

O resultado ser/&

...e ve:a 6ue na primeira linha da tabela+ o nome do funcion/rio K=rimeiro Tuncion/rioK e o valor da coluna KcoddepartamentoK P. 7gora digite&
select d from departamento

-epois de e4ecutar+ note 6ue na segunda linha o nome do departamento + cu:o c5digo igual a P + K-epartamento 7dministrativoK. Se 6uisermos ver uma listagem mostrando os funcion/rios e seus respectivos departamentos+ basta fa2er uma :un o das duas tabelas. .ma das formas de fa2er isso &
select departamento.nome K-epartamentoK+ funcionario.nome

96

Apostila Microsoft SQL Server 7.0

from funcionario+ departamento "here funcionario.coddepartamento k departamento.coddepartamento

O resultado ser/& #este e4emplo como as duas tabelas tem o mesmo nome de coluna necess/rio 6ualificar o nome com o nome da tabela+ como Cfuncionario.nomeC+ Cdepartamento.nomeC. ;m geral+ recomend/vel sempre 6ualificar os nomes para maior clare2a.

Sinta(e da Iuno
O SQL Server aceita duas sinta4es diferentes para :un o de tabelas. .ma delas+ mostrada acima+ espec%fica ao SQL Server e+ ]s ve2es+ um pouco mais simples de utili2ar. #a sinta4e do SQL Server+ na lista do T0O, as duas Aou maisB tabelas so especificadas+ separadas por v%rgulas. #a cl/usula !H;0; deve haver uma condi o ligando as duas+ a condi=o de <un=o (:oin condition*. #a lista de colunas do S;L;C$ podem ser inclu%dos colunas de 6ual6uer uma das tabelas. #o e4emplo acima foram especificadas as colunas Kdepartamento.nomeK Ao nome da departamento+ 6ue vem da tabela KdepartamentoKB e Kfuncionario.nomeK Anome do funcionario+ 6ue vem da tabela KfuncionarioKB. 7 outra forma de sinta4e 6ue pode ser usada a sinta4e do padro 7#S' SQL. O e4emplo anterior+ com a sinta4e 7#S'+ ficaria&
select departamento.nome+ funcionario.nome from funcionario inner :oin departamento on funcionario.coddepartamento k departamento.coddepartamento

#essa sinta4e+ o tipo de <un=o entre as tabelas deve ser especificado entre elas Averemos os diferentes tipos abai4oB e a condi o de :un o especificada com a palavra O#.

Iuno interior
O e4emplo acima uma <un=o interior de tabelas (inner :oin*. ;sse tipo de :un o conecta as duas tabelas e retorna apenas as linhas 6ue satisfa2em a condi o de :un o. #o e4emplo+ isso significa 6ue+ se e4istirem funcion/rios para os 6uais no h/ departamento relacionado eles no sero inclu%dos no resultado. 'gualmente+ se e4istirem departamentos 6ue no t3m empregadosAcomo KContabilidadeKB + eles no aparecem no resultado. .ma :un o interior chamada de e:ui<oin 6uando as colunas so comparadas usando o k+ e as duas colunas aparecem no resultado+ mostrando dados redundantes+ :/ 6ue elas t3m o mesmo valor. .ma :un o 97

Apostila Microsoft SQL Server 7.0

interior chamada <un=o natural 6uando a coluna usada para :un o aparece apenas uma ve2 no resultado+ vinda de uma ou outra tabela. #a sinta4e 7#S'+ :un 1es interiores so indicadas da forma&
ta6elaI '##;0 MO'# ta6elaJ O# condi=oAdeA<un=o

Iuno cru8ada ou irrestrita


.ma <un=o cru'ada (cross :oin* de tabelas+ tambm chamada <un=o irrestrita de duas tabelas gera um resultado formado por todas as combina 1es poss%veis de uma linha da primeira tabela com uma linha da segunda. #o e4iste uma condi o de :un o. ;sse resultado chamado produto cartesianodas duas tabelas. #a sinta4e 7#S'+ :un 1es cru2adas so indicadas com C0OSS MO'#+ por e4emplo&
select departamento.nome+ funcionario.coddepartamento from funcionario cross :oin departamento

#esse caso+ como a tabela KfuncionarioK tem @ linhas e a tabela KdepartamentoK tem Q linhas + o resultado final ser/ OP linhas 6ue @ d Q k OP linhas+ formadas por todas as combina 1es poss%veis de funcionarios e departamento. #a sinta4e do SQL Server+ basta especificar a lista de tabelas+ sem usar uma condi o de :un o&
select departamento.nome+ funcionario.nome+ salario from funcionario+ departamento

;sse e4atamente um dos problemas com a sinta4e informal& se voc3 incluir mais de uma tabela mas no colocar uma condi o de :un oA f/cil es6uecer uma condi o 6uando e4istem v/rias outras envolvidasB+ o banco de dados vai simplesmente fa2er um produto cartesiano sem nenhum aviso.

Mun 1es cru2adas raramente so usadas+ mas importante saber como evitar us/-las. =ara isso+ sempre crie uma :un o interior ou e4terior Averemos abai4oB + em casos de ter v/rias tabelas envolvidas.

Iuno e(terior
.ma :un o e4terior (outer :oin* mostra todas as linhas de uma tabela+ mesmo 6uando elas no satisfa2em a condi o de :un o. =or e4emplo&
select departamento.nome K-epartamentoK+ funcionario.nome KTuncionarioK from departamento left outer :oin funcionario on departamento.coddepartamento k funcionario.coddepartamento

O resultado ser/ algo semelhante a isso& 98

Apostila Microsoft SQL Server 7.0

Se usado L;T$ O.$;0 MO'# indica 6ue todas as linhas da tabela ] es6uerda Ano caso+ KdepartamentoKB so inclu%das no resultado. #esse caso+ so mostrados todos os departamentos+ mesmo a6ueles 6ue no tem funcion/rio. Quando um departamento no tem funcion/rio+ as colunas da tabela KfuncionarioK ir/ mostrar o valor #.LL . 7 tabela KdepartamentoK chamada de a ta6ela e@terior e KfuncionarioK a ta6ela interior da :un o. Se fosse usado 0'8H$ O.$;0 MO'#+ a tabela ] direita AKfuncionarioKB mostraria todas as linhas e a tabela ] es6uerda+ apenas as relacionadas. Se for usado T.LL O.$;0 MO'#+ todas as linhas de ambas as tabelas so inclu%das+ mesmo as 6ue no esto relacionadas com a outra tabela.

Iun/es com mais de duas tabelas


=ara falarmos de :un 1es entre duas tabelas crie uma tabela chamada KcargoK+ utili2e o ;nterprise ,anager ou o comando Create table. ;sta tabela ter/ as seguintes colunas& %olumn>ame DatatA'e Si8e CodCargo int #ome varchar ?J 7o criar esta tabela adicione os seguintes dados&
insert into cargo values AR+ KcargoRKB insert into cargo values AP+ KcargoPKB insert into cargo values AO+ KcargoOKB insert into cargo values AQ+ KcargoQKB insert into cargo values A?+ Kcargo?KB

#a tabela KfuncionarioK acrescente a seguinte coluna& %olumn>ame DatatA'e CodCargo int .tili2e o ;nterprise ,anager ou o comando 7lter $able. Yamos atuali2ar a tabela KfuncionarioK para acrescentar dados a coluna cargo+ e4ecute os seguintes comandos&
update funcionario set codcargo k R "here codfuncionario k R update funcionario set codcargo k P "here codfuncionario k P update funcionario set codcargo k O "here codfuncionario k O update funcionario set codcargo k Q "here codfuncionario k Q update funcionario set codcargo k ? "here codfuncionario k ?

N poss%vel :untar tr3s ou mais tabelas com informa 1es relacionadas. #o banco de dados K;4emplosK+ por e4emplo+ a tabela KcargoK contm uma linha 6ue representa cada cargo do funcion/rio. ;ntre os dados+ esta a identifica o do cargo AKcodcargoKB . 7 coluna KcodcargoK pode ser usada para buscar o nome do cargo+ fa2endo uma :un o com a tabela KfuncionarioK. 7 tabela KdepartamentoK contm uma linha 6ue representa cada departamento do funcion/rio. 7 coluna KcoddepartamentoKpode ser usada para buscar o nome do departamento+ fa2endo uma :un o com a tabela KdepartamentoK. Taremos o seguinte&
select funcionario.nome KTuncion/rioK+ cargo.nome KCargoK+ departamento.nome K-epartamentoK from funcionario inner :oin cargo on funcionario.codcargo k cargo.codcargo inner :oin departamento on funcionario.coddepartamento k departamento.coddepartamento

O resultado ser/ semelhante a este&

99

Apostila Microsoft SQL Server 7.0

#ote 6ue as duas :un 1es de tabela so representadas com um '##;0 MO'# ap5s o outro. O primeiro '##;0 MO'# cria uma CtabelaC virtual reunindo KfuncionarioK e KcargoK. O segundo re)ne essa tabela virtual ] tabela KdepartamentoK.

$'elidos de tabela
=ara simplicar a 6ualifica o de colunas+ pode-se usar um apelido (alias* de tabela+ um nome colocado imediatamente ap5s o nome da tabela+ na lista do T0O,. ;sse nome representa a tabela nas 6ualifica 1es. =or e4emplo+ a consulta anterior pode ser reescrita da forma&
select f.nome KTuncion/rioK+ c.nome KCargoK + d.nome K-epartamentoK from funcionario f inner :oin cargo c on f.codcargo k c.codcargo inner :oin departamento d on f.coddepartamento k d.coddepartamento

#esse caso+ KfK o apelido para a tabela KfuncionarioK+ KcK para a tabela KcargoK e KdK para a tabela KdepartamentoK. #ote 6ue os aliases podem ser usados na lista do S;L;C$ ou nas condi 1es de :un o Aou em outros lugares+ como numa cl/usula !H;0;B.

$uto-:un/es
.ma auto-<un=o (self :oin* uma :un o da tabela com ela mesma. #a tabela departamento+ por e4emplo+ cada departamento est/ subordinado a outro. 7 coluna KcoddeptsuperiorK indica o c5digo do departamento superior. =ara mostrarmos uma lista de todos os departamentos+ cada um com seus sub-departamentos+ podemos usar&
select dR.nome+ dP.nome from departamento dR inner :oin departamento dP on dR.coddepartamento k dP.coddeptsuperior

#esse caso+ obrigat5rio usar um apelido de tabela para distinguir as duas Cc5piasC da tabela 6ue esto sendo relacionadas& KdRK no e4emplo representa uma linha da tabela KdepartamentoK e KdPK representa outra linha 6ue esto sendo comparadas entre si. O resultado dessa consulta &

100

Apostila Microsoft SQL Server 7.0

Subconsultas
.ma su6-consulta (sub6uerL* uma consulta S;L;C$ aninhada dentro de outro comando SQL. ;la pode retornar um valor s5 ou uma lista de valores para ser usada numa compara o. =or e4emplo+ para saber o gasto 6ue a empresa tem com funcion/rios+ pode-se usar&
select sumAsalarioB from funcionario

...6ue d/ como resultado o valor RJ.?>?+@P . 7gora suponhamos 6ue 6ueremos saber 6ual a porcentagem do total 6ue o sal/rio do funcion/rio representa. -igite o seguinte comando&
select nome KTuncion/rioK+ Salario KSal/rioK+ =orcentagem k RJJdAsalariodR.J/ "select sumAsalarioB from funcionario# B from funcionario

O resultado ser/&

7 coluna K=orcentagemK calculada como a 6uantidade dividida pelo resultado da sub-consulta Aselect sumAsalarioB from funcionarioB+ 6ue k RJ.?>?+@P nesse caso. #ote portanto 6ue a sub-consulta e4ecutada e seu resultado substitu%do dentro da outra consulta+ como se tivssemos escrito&
select nome KTuncion/rioK+ Salario KSal/rioK+ =orcentagem k RJJdAsalariodR.J/ 121LRL;P* B from funcionario

Subconsultas so sempre colocadas entre par3nteses e podem retornar no resultado apenas uma coluna Aembora em alguns casos podem retornar mais de uma linhaB. #o e4emplo acima+ se a subconsulta retornasse mais de um valor+ haveria um erro de e4ecu o.

Subconsultas com o'eradores


.ma sub-consulta pode ser inserida nos resultados+ como acima+ ou pode ser usada numa e4presso !H;0;+ com um operador de compara o+ como k+ n+ b+ nk+ bk ou nb. #esse caso ela deve retornar apenas um valor. ;sse valor substitu%do na consulta principal no momento da e4ecu o.

Listas de valores
.ma sub-consulta pode retornar uma lista de valores e essa lista de valores pode ser usada em compara 1es com o operador '#. =or e4emplo+ para saber 6uais so os funcionarios 6ue possuem cargos+ pode ser usado&
select funcionario.nome

101

Apostila Microsoft SQL Server 7.0 from funcionario "here codcargo in Aselect codcargo from cargoB

.ma sub-consulta pode ser usada tambm com um operador de compara o modificado com as palavras 7#^ (6ual6uer* ou 7LL (todos*. =or e4emplo+ b 7LL (maior 6ue todos* significa 6ue para 6ue a condi o se:a satisfeita+ o valor comparado deve ser maior 6ue todos os elementos da lista& O e4emplo abai4o utili2a o banco de dados =ubs.
select title from titles "here advance b 7LL Aselect advance from publishers+ titles "here titles.pubDid k publishers.pubDid and pubDname k K7lgodata 'nfosLstemsKB

7 subconsulta retorna uma lista de valores de KadvanceK (adiantamento* 6ue contm todos os valores de adiantamento de livros publicados pela editora K7lgodata 'nfosLstemsK. Seu resultado A?JJJ+ ?JJJ+ ?JJJ+ GJJJ+ @JJJB 7 consulta e4terna retorna os livros cu:o KadvanceK maior do 6ue todos os itens dessa lista. 7s seguintes combina 1es 6ue podem ser usadas& b 7LL maior 6ue todos os elementos da lista n 7LL menor 6ue todos nb 7LL diferente de todos Ao mesmo 6ue #O$ '#B k 7#^ igual a algum dos elementos da lista Ao mesmo 6ue '#B b 7#^ maior 6ue algum dos elementos da lista n 7#^ menor 6ue algum dos elementos nb 7#^ diferente de algum dos elementos da lista Afalso se igual a todosB 7lm disso+ podem ser usadas combina 1es com bk e nk+ de forma an/loga. #ote 6ue no permitido o uso de k 7LL.

?estes de e(istCncia
.m teste de e4ist3ncia uma condi o 6ue envolve a palavra ;<'S$S e uma sub-consulta. 7 condi o verdadeira se a sub-consulta retorna alguma linha e falsa se ela retorna 2ero linhas. =or e4emplo+ para saber 6uais os departamentos 6ue possue funcion/rios cu:o cargo igual a cargoR+ utili2e o banco de dados ;4emplos e e4ecute o seguinte comando&
select d.nome from departamento d "here e4ists Aselect d from funcionario f+ cargo c "here f.codcargo k c.codcargo and c.nome k KCargoRK and d.coddepartamento k f.coddepartamentoB

O resultado da sub-consulta no importa+ pois est/ apenas sendo testada a e4ist3ncia de um resultado. #esse caso+ a lista de colunas sempre um asterisco AdB.

Subconsultas correlacionadas
7s sub-consultas 6ue foram vistas at agora nos e4emplos podem ser avaliadas uma ve2 s5 e depois substitu%das no corpo da consulta principal. M/ uma sub-consulta correlacionada (correlated sub6uerL* depende dos valores da consulta principal onde ela est/ alinhada+ por isso deve ser avaliada uma ve2 para cada linha do resultado e4terno. =or e4emplo+ a seguinte utili2e o banco de dados =ubs para consultar a lista+ para cada livro+ o autor 6ue tem a maior porcentagem de roLalties sobre o livro Aa tabela KtitleauthorK relaciona livros e autores de forma # 4 #B&
select titleDid+ auDid+ roLaltLper from titleauthor ta "here roLaltLper k Aselect ma4AroLaltLperB from titleauthor

102

Apostila Microsoft SQL Server 7.0 "here titleDid k ta.titleDidB

;ssa uma sub-consulta correlacionada por6ue ela fa2 refer3ncia a uma tabela da consulta mais e4terna. 7 sub-consulta avaliada repetidas ve2es+ uma para cada linha da tabela KtitleauthorK.

R - Im'lementando Kndices
7or ,ue 6ndicesS ?i'os de Kndices .timi8ando %onsultas

Objetivos: - 7prender a criar %ndices; - ;ntender o funcionamento do otimi2ador de consultas.

7or ,ue 6ndicesS


Kndice (inde4* um mecanismo 6ue acelera bastante o acesso aos dados. Consiste de uma estrutura de dados 6ue contm ponteiros ordenados para os dados. O SQL Server usa %ndices (inde4es ou indices* automaticamente em v/rias situa 1es para acelerar a pes6uisa e atuali2a o de dados+ como por e4emplo onde houverem restri 1es (constraints* =0',70^ I;^ e .#'Q.;. 0ecomenda-se considerar o seguinte para a cria o de %ndices& Se uma coluna est/ presente na cl/usula !H;0; em um comando S;L;C$+ .=-7$; ou -;L;$;+ o SQL Server consegue verificar as condi 1es mais rapidamente se houver um %ndice. Caso contr/rio+ ele fa2 uma varredura se6gencial da tabela (table scan*. Se uma coluna muito usada para ordenar valores Acom O0-;0 F^B+ essa ordena o muito mais eficiente se ela tiver um %ndice. Se uma coluna usada para fa2er :un o de duas tabelas+ essas :un 1es podem ser feitas mais eficientemente se ela estiver inde@ada. fndices no apenas aceleram a recupera o de linhas em consultas+ mas eles tambm aumentam a velocidade de atuali2a 1es e e4clus1es. 'sso ocorre por6ue o SQL Server deve encontrar uma linha+ antes de poder atuali2/-la ou e4clu%-la. #o entanto+ %ndices levam tempo para serem criados e ocupam espa o em disco. Cada atuali2a o na tabela tambm atuali2a dinamicamente todos os %ndices definidos. =ortanto+ se voc3 criar muitos %ndices in)teis numa tabela+ pode estar atrapalhando o desempenho da atuali2a o de dados sem agili2ar muito o tempo de resposta nas consultas. #o geral+ o aumento da efici3ncia obtido com o uso de %ndices para locali2ar a linha sobrepu:a a carga e4tra de trabalho necess/ria para atuali2ar os %ndices+ a no ser+ como mencionado acima+ 6ue a tabela tenha muitos %ndices.

. .timi8ador
O otimi2ador o componente do SQL Server 6ue analisa as consultas SQL e decide 6uando vale a pena utili2ar um %ndice ou no. cs ve2es+ mesmo 6uando voc3 define um %ndice em uma coluna+ o otimi2ador resolve no utili2/-lo por determinar 6ue ele no a:udaria no desempenho. =or e4emplo+ no vale a pena utili2ar um %ndice 6ue retorna uma porcentagem muito grande de linhas+ pois levaria mais tempo analisando o %ndice do 6ue o tempo 6ue ele economi2aria filtrando os resultados. =or 103

Apostila Microsoft SQL Server 7.0

e4emplo+ se uma coluna tem apenas tr3s valores poss%veis+ J+ R+ e P+ no vale a pena inde4ar+ pois 6ual6uer consulta pode retornar at OOi das linhas. O otimi2ador descobre isso e ignora esse tipo de %ndice.

?i'os de Kndices
%lustered
.m %ndice clustered (agrupado* a6uele onde a ordem f%sica das p/ginas de dados a mesma ordem do %ndice. 7 cada inser o+ numa tabela 6ue tem um %ndice agrupado+ a ordem f%sica dos dados pode mudar. S5 pode haver um )nico %ndice agrupado por tabela.Se voc3 no especificar o indice Clustered a sua tabela ser/ criada com o %ndice #on-clustered Aver abia4oB. 0ecomenda-se criar um %ndice agrupado antes de 6ual6uer outro+ pois ao cri/-lo+ as linhas da tabela so reordenadas fisicamente e todos os outros %ndices so reconstru%dos. N recomend/vel usar um %ndice agrupado para a coluna 6ue representa a ordem mais natural da tabela+ ou se:a+ a ordem na 6ual geralmente os resultados sero apresentados. 0ecomenda-se utili2ar %ndice agrupado (Clustered* nos seguintes casos& Os dados das colunas so acessados fre6uentemente. =or e4emplo na tabela de KfuncionarioKdo banco de dados ;4emplo + vamos supor 6ue so feitas v/rias pes6uisas com o nome do funcionario+ neste caso voc3 poderia criar um %ndice clustered com o nome do funcion/rio. ;m colunas usadas com O0-;0 F^ e 80O.= F^. ;m colunas 6ue so alteradas fre6uentemente. ;m chaves prim/rias+ contanto 6ue no ha:a outras colunas melhores. ;m chaves estrangeiras+ por6ue geralmente elas no so )nicas.

>on-clustered
.m %ndice non-clustered (no-agrupado* possui uma ordem f%sica diferente da ordem dos dados. ;4iste um n%vel a mais+ de ponteiros para os dados+ 6ue permite acess/-los indiretamente. =ode haver mais de um %ndice no-agrupado na tabela+ at o m/4imo de PQ> %ndices+ incluindo 6ual6uer %ndice criado com restri 1es =0',70^ I;^ ou .#'Q.;. Quando o tipo de %ndice da tabela no for espec%ficado ele ser/ criado como um %ndice #onclustered. N recomendado utili2ar %ndices no agrupados (#onclustered* para& Colunas 6ue so usadas nas cla)sulas O0-;0 F^ e 80O.= F^. Colunas 6ue so fre6uentemente utili2adas como condi 1es na cla)sula !H;0;.

%aracter6sticas dos Kndices


Tnico
.m %ndice Hnico (uni6ue* a6uele onde os valores da chave no podem ser repetidos+ ou se:a+ os valores das colunas do %ndice+ tomados em con:unto+ no podem se repetir. .m %ndice )nico pode ser agrupado ou noagrupado. =or e4emplo+ na tabela Cliente+ poderia ser criado um %ndice )nico para a coluna CodCliente+ significando 6ue no pode haver valores duplicados nessa coluna. Se voc3 tenta inserir dados em uma tabela com valores repetidos para CodCliente+ a inser o falha. 104

Apostila Microsoft SQL Server 7.0

Quando da cria o de um %ndice )nico+ no pode haver valores duplicados nas colunas do %ndice. Se houver+ a cria o do %ndice falha e voc3 deve alterar as colunas antes de tentar cri/-lo novamente.

%om'osto
.m %ndice composto a6uele formado por duas ou mais colunas. ;sse tipo de %ndice )til 6uando duas ou mais colunas so sempre pes6uisadas em con:unto. =or e4emplo+ poderia ser criado um %ndice na tabela Cliente para as colunas ACidade+;stadoB. 7 ordem das colunas importa& um %ndice com A;stado+CidadeB seria completamente diferente. Se voc3 criar um %ndice composto+ o otimi2ador vai utili2/-lo mesmo 6uando apenas a primeira coluna especificada+ por e4emplo em&
S;L;C$ d T0O, Cliente !H;0; Cidade k K8oiZniaK

.m %ndice composto tambm pode ser )nico. #esse caso+ o 6ue no pode se repetir o valor das duas ou mais colunas+ tomadas em con:unto. =or e4emplo+ os valores poderiam ser AR+RB+ AR+PB+ AP+RB+ AP+PB etc. ,as no poderia haver duas linhas com os valores AR+RB.

%riando e e(cluindo 6ndices utili8ando o 4nter'rise Manager


.m %ndice pode ser criado no ;nterprise ,anager. Fasta clicar na tabela dese:ada com o boto direito+ selecionar $ll ?as!s e Manage Inde(es.

#a op o K$ableK informe a tabela em 6ue dese:a criar o %ndice. Cli6ue no boto >e 111. 7parece a tela abai4o& ;m KColumnK+ mar6ue na cai4a de verifica o aAsB colunaAsB 6ue voc3 6uer 6ue fa aAmB parte do %ndice. Yoc3 pode mover 6ual6uer coluna selecionada para cima ou para bai4o Alembrando 6ue em um %ndice ocmposto a colunas em ordens diferentes formam %ndices diferentesB 105

Apostila Microsoft SQL Server 7.0

;m K'nde4 name&K colo6ue o nome do %ndice 6ue dese:a criar ou visuali2ar. 7s pr54imas op 1es iro definir o tipo e as caracter%sticas do %ndice& ;m K'nde4 optionsK+ pode-se definir o seguinte+ com a sele o das op 1es ade6uadas& se voc3 marcar C.ni6ue valuesC (valores )nicos*+ o %ndice ser/ um %ndice )nico. #o caso de um %ndice )nico+ se voc3 marcar a op o C'gnore -uplicate valuesC (ignorar valores duplicados*+ ao e4ecutar um comando '#S;0$ ou .=-7$; em v/rias linhas+ apenas as linhas 6ue no t3m chave duplicada sero inseridas/atuali2adas; para as outras+ o SQL Server mostra uma mensagem de aviso e ignora Ano insereB as linhas duplicadas. Se esta op o no for marcada+ o comando '#S;0$ ou .=-7$; falha e no insere/atuali2a nenhuma linha. >ota@ .m %ndice )nico no pode ser criado em uma coluna 6ue :/ tenha valores duplicados+ mesmo 6ue voc3 selecione a op o de Cignorar valores duplicadosC. Se voc3 tentar+ o SQL Server mostra uma mensagem de erro e lista os valores duplicados. ;limine os valores duplicados antes de criar um %ndice )nico na coluna. =ara criar um %ndice agrupado+ mar6ue a op o CClusteredC. Com o %ndice agrupado+ voc3 no pode ignorar valores duplicados A permitido marcar a op o+ mas ao clicar em OI+ surge uma mensagem de erro+ avisando 6ue as duas op 1es so mutuamente e4clusivasB. =orm+ se voc3 marcar+ :unto com a op o CClusteredC+ a op o C.ni6ue valuesC+ permitido ignorar valores duplicados Aselecionando C'gnore -uplicate YaluesC+ 6ue sero tratados da mesma forma 6ue no caso do %ndice ser apenas )nico Acom a diferen a 6ue agora ele um %ndice )nico agrupadoB. Se :/ houver um %ndice agrupado na tabela+ na cria o de um novo %ndice+ no se permite selecionar a op o CclusteredCApois s5 pode haver um %ndice agrupado em 6ual6uer tabelaB. C-o not recompute statisticsC& com esta op o marcada+ as estat%siticas do %ndice no so recalculadas automaticamente 6uando o %ndice atuali2ado. Tilegroup& especifica em 6ue grupo de ar6uivos ser/ criado o %ndice. Cli6ue no nome do grupo de ar6uivos. Ave:a grupos de ar6uivosB C-rop e4istingC& para e4cluir 6ual6uer %ndice e4istente com o mesmo nome antes de criar o novo %ndice. .tili2ada 6uando voc3 altera um %ndice :/ criado. Yoc3 no pode marcar ou desmarcar essa op o. >ota@ Yoc3 no pode transformar um %ndice agrupado em um %ndice no agrupado+ editando-o. Yoc3 deve e4clu%-lo+ para ento criar outro %ndice A6ue pode ter o mesmo nomeB. CTill factorC& Afator de preenchimentoB especifica o 6uo cheio o SQL Server deve fa2er o n%vel folha de cada p/gina de %ndice durante a cria o do mesmo.Quando uma p/gina de %ndice fica cheia+ o SQL Server deve gastar tempo para dividir a p/gina+ liberando espa o para novas colunas+ o 6ue tem um custo computacional alto. =ara tabelas em 6ue so feitas muitas atuali2a 1es+ um valor para CTill factorC bem escolhido gera um melhor desempenho em atuali2a 1es do 6ue um valor mal escolhido. O valor de CTill factorC fornecido na forma de porcentagem. C=ad inde4C& ;specifica o espa o a ser dei4ado desocupado em cada p/gina nos n%veis intermedi/rios do %ndice. S5 )til 6uando selecionado em con:unto com CTill factorC+ pois o Cpad inde4C usa a porcentagem definida em CTill factorC. 'ndependentemente do valor de CTill factorC+ o n)mero de colunas numa p/gina intermedi/ria nunca menor do 6ue duas. -efinidas todas as op 1es dese:adas+ cli6ue em O9+ e o %ndice ser/ criado Aou alteradoB. Yoc3 pode ver e alterar o c5digo SQL usado na cria o do %ndice+ bastgando para isso clicar no boto C;dit SQLC. Quando editando o c5digo+ voc3 pode verific/-lo antes de e4ecutar+ bastando para isso clicar em C=arseC. Clicar em C;4ecuteC+ tem o mesmo efeito de clicar em O9 na tela anterior. =ara e4cluir um %ndice 6ual6uer+ pelo ;nterprise ,anager+ basta selecion/-lo+ na tela C,anage 'nde4esC+ e clicar em -elete.

106

Apostila Microsoft SQL Server 7.0

=ara criar um %ndice na cria o de uma tabela basta + no modo de edi o da tabela+ selecionar 6ual6uer coluna+ clicar com o boto direito+ e em =roperties+ na :anela 6ue aparece+ 6ue a :anela abai4o+ selecionar a guia 'nde4es/IeLs&

%riando e e(cluindo 6ndices com comandos SQL


$ambm poss%vel criar um %ndice com o comando SQL C0;7$; '#-;< e e4cluir um %ndice com -0O= '#-;<.
C0;7$; (.#'Q.;* (CL.S$;0;- \ #O#CL.S$;0;-* '#-;< nomeDindice O# tabela AnomeDcolunaR (+ nomeDcolunaP+ ...n*B (!'$H (=7-D'#-;<* ((+* T'LLT7C$O0 k fatorDpreenchimento* ((+* '8#O0;D-.=DI;^* ((+* -0O=D;<'S$'#8* ((+* S$7$'S$'CSD#O0;CO,=.$;* * (O# grupoDar6uivos*

Onde& nomeAindice o nome do %ndice 6ue dese:a criar. nomeAta6ela o nome da tabela 6ue dese:a criar o %ndice. nomeAcolunaI o nome da coluna 6ue ir/ fa2er parte do %ndice.Se o %ndice tiver mais de uma coluna acrescente a v%rgula e colo6ue o nome das outras colunas. .#'Q.; indica se o %ndice ser/ )nico. N opcional. Se o %ndice fo )nico voc3 pode acrescentar a op o '8#O0;D-.=DI;^ (ignorar chaves duplicadas*. CL.S$;0;- indica se o %ndice ser/ agrupado. Com o %ndice agrupado e a op o .#'Q.;+ voc3 pode tambm usar a op o '8#O0;D-.=DI;^+ 107

Apostila Microsoft SQL Server 7.0

T'LLT7C$O0 o fator de prenchimento+ ou se:a+ a porcentagem de espa o livre 6ue ser/ dei4ado em cada p/gina do %ndice. -0O=D;<'S$'#8 e4clui o %ndice e4istente com o mesmo nome. Se voc3 for criar um %ndice cu:o nome no e4iste e usar esta o o+ o SQL Server retornar/ uma mensagem avisando 6ue o %ndice com o nome sendo criado no foi encontrado. S$7$'S$'CSD#O0;CO,=.$; fa2 com 6ue as estat%sticas do %ndice no se:am recalculadas automaticamente com a atuali2a o do %ndice. =7-D'#-;< dei4a espa os va2ios nas p/ginas dos n%veis intermedi/rios do %ndice. S5 fa2 sentido se usado em con:unto com T'LLT7C$O0. >ota@ =ara criar 6ual6uer %ndice+ voc3 deve estar posicionado no banco de dados em 6ue o mesmo ser/ criado+ ou informar o nome completo da tabela AnomeDbancoDdeDdados..nomeDtabelaB. $ambm poss%vel usar a cl/usula .S;S antes do comando de cria o do %ndice A.S;S nomeDbancoDdeDdadosB. =ara e4cluir algum %ndice+ use o comando -0O= '#-;<+ com a seguinte sinta4e&
-0O= '#-;< Ktabela.%ndiceK (+...n*

Onde tabela.indice o nome da tabela+ seguido do nome do %ndice 6ue se dese:a e4cluir. Caso voc3 6ueira e4cluir mais de um %ndice de uma ve2+ basta colocar uma v%rgula e indicar o nome doAsB outroAsB %ndiceAsB a serAemB e4clu%doAsB.

.timi8ando %onsultas
O otimi2ador escolhe uma de duas alternativas ao fa2er uma consulta& ou varre a tabela ou usa um %ndice. ;le decide o 6ue fa2er baseado em& ;stimativa apro4imada de 6uanto trabalho necess/rio para usar o %ndice ou no. ;ssa estimativa baseada em informa 1es estat%sticas sobre o %ndice+ 6ue di2em 6ual a distribui o dos dados. ;ssas informa 1es podem ficar desatuali2adas. =ara corrigi-las+ e4ecute o comando .=-7$; S$7$'S$'CS nomeAdaAta6ela. Se uma tabela muito pe6uena+ ou se o otimi2ador espera 6ue ser/ retornada uma grande porcentagem de linhas+ ele fa2 uma varredura. Se na cl/usula !H;0; da consulta esto presentes colunas inde4adas+ bem prov/vel 6ue o otimi2ador resolva utili2ar o %ndice.

$nalisando o .timi8ador
=ara saber se o otimi2ador est/ usando seus %ndices ou no+ no QuerL 7nalL2er+ cli6ue no boto CSho" ;4ecution =lanC ACtreLB. Quando da e4ecu o de uma consulta+ voc3 agora tem duas guias+ como pode ser visto abai4o& 108

Apostila Microsoft SQL Server 7.0

;ssa guias podem ser selecionadas na parte inferior da :anela da consulta. .ma o C;stimated ;4ecution =lanC e a outra C0esultsC. #a guia C;stimated e4ecution planC+ voc3 pode ver a an/lise de cada linha da sua consulta ou 6ual6uer comando SQL. =ara cada linha da consulta+ voc3 ver/ seu custo CQuerL costC como uma porcentagem do custo total da se6u3ncia de comandos+ e seu te4to CQuerL te4tC. #a guia C0esultsC voc3 ver/ o resultado da consulta. 7lm disso+ para cada linha da consulta+ mostrada uma representa o gr/fica A6ue deve ser lida da direita para a es6uerdaB+ 6ue especifica os operadores l5gicos e f%sicos utili2ados na e4ecu o de cada parte da consulta ou comando. =ara saber mais sobre a representa o gr/fica do plano de e4ecu o+ procure porC8raphicallL -isplaLing the ;4ecution =lan .sing SQL Server QuerL 7nalL2erC no Foo9s Online. Cada um dos %cones A6ue so chamados de operadores+ f%sicos e l5gicosB mostrados no plano de e4ecu o+ 6uando se passa o mouse por cima dos mesmos+ mostram informa 1es espec%ficas a seu respeito+ como seu nome+ o custo computacional em termos de C=. e de '/O+ alm dos parZmetros 6ue foram usados com o mesmo e uma breve descri o de sua fun o. Quando voc3 passa o mouse por cima da seta 6ue liga os %cones+ voc3 v3 6uantas linhas foram retornadas Ano caso de um S;L;C$B pelo seu comando+ e o tamanho estimado de cada linha. Caso voc3 6ueira ver os resultados da an/lise do otimi2ador em modo te4to+ use o comando
S;$ SHO!=L7#D7LL O#

'sso fa2 com 6ue o SQL Server no e4ecute comandos SQL. 7o invs disso+ ele retorna informa 1es detalhadas sobre como os comandos so e4ecutados e estima os custos dos comandos. 7 informa o retornada como um con:unto de linhas 6ue formam uma /rvore hier/r6uica 6ue representa os passos dados pelo processadore de consultas do SQL Server na e4ecu o de cada comando+ seguida por algumas linhas com os detalhes dos passos de e4ecu o. ;sse comando no pode ser parte de um procedimento arma2enado; deve ser o )nico comando em um batch Alote de comandosB. O comando destinado a aplica 1es escritas para lidar com sua sa%da. =ara retornar sa%das compreens%veis para aplica 1es ,S--OS+ use
S;$ SHO!=L7#D$;<$ O#

Os resultados so retornados na forma de an/lise da consulta+ sem sua e4ecu o+ at 6ue voc3 CdesligueC essas op 1es+ bastando para isso digitar
S;$ SHO!=L7#D7LL OTT

ou
S;$ SHO!=L7#D$;<$ OTT

dependendo de 6ual das op 1es estiver CligadaC

12 - Integridade de Dados

109

Apostila Microsoft SQL Server 7.0 %onceitos $ 'ro'riedade ID4>?I?Q 3sando De+aults e &egras De+inindo e 3sando &estri/es G%onstraintsH Quando 3sar %ada %om'onente

Objetivos: - 7prender a criar colunas com auto-incremento; - 7prender a utili2ar as op 1es defaults e 0egras nas colunas; - 7prender a definir restri 1es nas tabelas para garantir a integridade dos dados; - Saber 6uando escolher cada um dos recursos de integridade de dados.

$ 'ro'riedade ID4>?I?Q
.ma coluna criada com a propriedade '-;#$'$^ tem um valor )nico 6ue gerado automaticamente pelo sistema. Somente uma coluna pode ter essa propriedade. =or e4emplo+ crie uma nova tabela no banco de dados ;4emplo+ com o seguinte comando&
create table =roduto ACod=roduto int #O$ #.LL '-;#$'$^+ #ome varcharASJB+ =re o moneLB

.ma coluna '-;#$'$^ no aceita um valor e4plicitamente inserido. 7o inserir dados na tabela+ a coluna deve ser omitida. ;4ecute agora&
insert into =roduto A#ome+ =re oB values AK=rimeiro =rodutoK+ RJJ.JB insert into =roduto A#ome+ =re oB values AKSegundo =rodutoK+ R?J.JB insert into =roduto A#ome+ =re oB values AK$erceiro =rodutoK+ RPJ.JB

;4ecute agora&
select d from =roduto

#ote 6ue a coluna Cod=roduto foi preenchida automaticamente com um valor auto-incrementado pelo sistema&
Cod=roduto ----------R P O AO ro"AsB affectedB #ome ------------------=rimeiro =roduto Segundo =roduto $erceiro =roduto =re o -------------------------RJJ+JJ R?J+JJ RPJ+JJ

Opcionalmente+ na cria o da tabela+ pode ser informado uma semente Avalor inicial para a colunaB e um incremento+ como em&
Cod=roduto int '-;#$'$^AJ+RJB

Onde o J a semente e o RJ o incremento.

Desabilitando ID4>?I?Q
Yoc3 pode temporariamente desativar a propriedade '-;#$'$^+ para 6ue voc3 possa inserir valores e4plicitamente numa coluna com '-;#$'$^. =ode ser necess/rio 6ue voc3 insira valores e4plicitamente em tabelas 6ue t3m itens deletados com fre6u3ncia.'nserir valores e4plicitamente na coluna com '-;#$'$^ lhe permite preencher espa os va2ios dei4ados na tabela. 110

Apostila Microsoft SQL Server 7.0

=ara desativar a gera o autom/tica de valores+ use&


set identitLDinsert nomeAdaAta6ela on

=ara voltar ao funcionamento normal+ use&


set identitLDinsert nomeAdaAta6ela off

7 6ual6uer instante+ somente uma ta6ela em uma sesso pode ter a propriedadede de '-;#$'$^D'#S;0$ em O#. ;sta propriedade s5 v/lida para o usu/rio atual e a sesso atual Aperde o efeito 6uando voc3 se desconecta do SQL ServerB. Se :/ houver uma tabela com esta propriedade em O#+ e se entrar com o comando S;$ '-;#$'$^D'#S;0$ O# para outra tabela+ ser/ retornado uma mensagem de erro di2endo 6ue essa propriedade :/ est/ em O# e 6ual a tabela para a 6ual essa propriedade est/ em O#.

Identi+icador globalmente e(clusivo "G3ID#


;mbora a propriedade '-;#$'$^ automati2e a numera o de colunas dentro de uma tabela+ tabelas separadas+ cada uma com sua pr5pria coluna de identificador+ pode gerar os mesmos valores. 'sso ocorre por6ue se garante 6ue a propriedade '-;#$'$^ se:a )nica apenas para a tabela na 6ual ela for usada. Se uma aplica o deve gerar uma coluna de identificador 6ue se:a )nica em todo o banco de dados ou em todos bancos de dados de cada computador ligado em rede no mundo+ use a propriedade 0O!8.'-COL+ o tipo de dados uni,ueidenti+ier+ e a fun o #;!'-. O tipo de dados uni,ueidenti+ier arma2ena valores bin/rios de RS bits 6ue operam como n)meros globalmente e4clusivos de identifica o A8.'-B. .m 8.'- um n)mero bin/rio 6ue se garante ser e4clusivo; nenhum outro computador no mindo gerar/ uma c5pia da6uele valor 8.'-. 7 principal utilidade de um 8.' a atribui o de um identificador 6ue deva ser e4clusivo em uma rede 6ue tenha diversos computadores em diversos locais. Quando voc3 usar a propriedade 0O!8.'-COL para definir uma coluna com identificador globalmente e4clusivo+ considere 6ue& .ma tabela s5 pode ter uma coluna 0O!8.'-COL+ e essa coluna deve ser definida utili2ando o tipo de dados uni6ueidentifier. O SQL Server no gera automaticamente valores para a coluna. =ara inserir um valor globalmente e4clusivo+ crie uma defini o -;T7.L$ na coluna 6ue usa a fun o #;!'- para gerar um valor globalmente e4clusivo. Como a propriedade 0O!8.'-COL no for a a unicidade+ a restri o .#'Q.; deve ser usada para se assegurar 6ue valores e4clusivos se:am inseridos na coluna 0O!8.'-COL. O tipo de dados uni,ueidenti+ier no gera automaticamente novos '-s para colunas inseridas+ como a propriedade '-;#$'$^ o fa2. =ara obter novos valores uni,ueidenti+ier+ uma tabela deve ter uma cl/usula -;T7.L$ especificando a fun o #;!'-+ ou os comandos '#S;0$ devem usar a fun o #;!'-. =or e4emplo&
C0;7$; $7FL; $abela;4clusiva AColuna;4clusiva .#'Q.;'-;#$'T';0 -;T7.L$ #;!'-AB+ Caracteres Y70CH70ARJBB 8O '#S;0$ '#$O $abela;4clusivaACaracteresB Y7L.;S AKabcKB '#S;0$ '#$O $abela;4clusiva Y7L.;S A#;!'-AB+ KdefKB 8O

7 principal vantagem do tipo de dados uni,ueidenti+ier 6ue se garante 6ue os valores gerados pela fun o $ransact-SQL+ #;!'-+ se:am e4clusivos ao redor do mundo. ,as por outro lado+ o tipo de dados uni,ueidenti+ier tem srias desvantagens& Os valores so longos e obscuros. 'sso os torna dif%ceis de serem digitados corretamente pelos usu/rios+ e mais dif%cil ainda de serem lembrados. Os valores so aleat5rios e no aceitam 6uais6uer padro 6ue os torne mais significativos para os usu/rios. 111

Apostila Microsoft SQL Server 7.0

#o h/ como determinar a se6u3ncia em 6ue os valores uni,ueidenti+ier so gerados. ;les no se ade6uam a aplica 1es e4istentes 6ue incrementem serialmente valores-chave. Como t3m RS bLtes+ os dados do tipo uni,ueidenti+ier so relativamente grandes se comparados com outros tipos de dados tais como inteiros de Q bLtes. 'sto significa 6ue %ndices constru%dos usando chaves do tipo uni,ueidenti+ier podem ser relativamente mais lentos do 6ue se implementados utili2ando uma chave int.

3sando De+aults e &egras


.m de+ault um valor 6ue usado para colunas 6uando seus valores no so e4plicitamente informados. .m default pode ser criado como um ob:eto ] parte ou como restri=o de uma coluna+ como veremos mais tarde. .ma regra uma condi o 6ue verificada 6uando dados so inseridos numa tabela. ;la tambm pode ser criado como um ob:eto ] parte ou como uma restri o CH;CI+ como veremos.

%riando e utili8ando um De+ault


=ara criar um default no ;nterprise ,anager+ cli6ue no item C-efaultsC com o boto direito e em >e De+ault. -igite o nome do default+ nesse caso K=reco-efaultK. ;m K-escriptionK+ digite o valor dele+ 6ue ser/ ?J.JJ e cli6ue no boto O9. =ara vincular um default a uma coluna+ de forma 6ue ela passe a usar esse valor default+ selecione o default 6ue voc3 acabou de criar+ cli6ue nele com o boto direito e em =roperties. Cli6ue no boto CFind ColumnsC. Selecione a tabela+ no caso C=rodutoC. Cli6ue em =re o+ na coluna C.nbound ColumnsC e cli6ue em 7ddbb. 7 coluna 6ue voc3 tiver selecionado aparece agora do lado direito+ em bai4o de Found Columns. Cli6ue em 7pplL. Teche todas as :anelas clicando em O9. =ara testar o default+ insira valores na tabela C=rodutoC sem informar o pre o&
insert into =roduto A#omeB values AK=roduto defaultKB

Yerifi6ue o conte)do da tabela. O K=roduto defaultK deve ter o =re ok?J.JJ.

%riando e 3tili8ando uma &egra


.ma regra verifica o valor de uma coluna para saber se esse valor ser/ aceito ou no. Se um valor inserido com '#S;0$ ou atuali2ado com .=-7$; no satisfa2 a regra+ ocorre um erro e a opera o cancelada. .ma regra contm uma condi o 6ual6uer Asemelhante a uma cl/usula !H;0;B 6ue tem um parLmetro a ser verificado. ;sse parZmetro substitu%do pelo valor da coluna no momento de e4ecu o da regra. .m parZmetro sempre iniciado com U e pode ter 6ual6uer nome. ;le pode ser usado mais de uma ve2 no te4to da regra+ se necess/rio. Yamos criar uma regra para verificar se um estado v/lido. ;la ir/ verificar se o valor informado pertence a um con:unto de siglas v/lidas de estado. #o ;nterprise ,anager+ cli6ue em C0ulesC com o boto direito e em >e &ule. -igite no nome da regra C0egra;stadoC e em Cte4tC+ digite&
Uvalor in AK8OK+ K$OK+ K0MK+ KS=KB

#ote 6ue para simplificar no colocamos todos os estados v/lidos. O nome do parZmetro valor+ e a condi o verifica se Uvalor um dos valores da lista. Cli6ue no boto O9. 7gora essa regra pode ser usada em uma coluna 6ual6uer. Cli6ue com o boto direito na regra 6ue voc3 acabou de criar+ selecione =roperties+ cli6ue no boto CFind ColumnsCe vamos ligar essa regra+ na tabela Cliente+ ] coluna C;stadoC. Ta a isso+ selecionando a tabela Cliente+ selecionando o campo ;stado em 112

Apostila Microsoft SQL Server 7.0

C.nbound ColumnsC+ e clicando no boto 7dd. Teche as :anelas+ clicando em O9 duas ve2es. #ote 6ue a regra s5 se aplica aos novos dados 6ue sero inseridos e no afeta os anteriores. 7gora tente inserir um dado na tabela Cliente+ como por e4emplo&
insert into Cliente ACodCliente+ #ome+ ;stadoB values ARJ+ K-cimo ClienteK+ K<^KB

Como K<^K no satisfa2 a regra+ o SQL Server vai mostrar uma mensagem indicando isso.

Vinculando a ti'os de dados


.m default ou uma regra pode ser vinculadoAaB a um tipo de dados definido pelo usu/rio. #esse caso+ todas as colunas 6ue forem criadas com a6uele tipo tero o mesmo valor default Acaso no tenha sido especificado um outro+ 6ue nesse caso tem preced3nciaB ou a mesma regra de valida o. =ara testar isso+ vamos criar um novo tipo de dados chamado KestadoK. Cli6ue com o boto direito em C.ser defined data tLpesC e em >e 3ser De+ined Data ?A'e. Chame o tipo de KestadoK e na sua descri o colo6ue CH70APB. #a coluna C-efaultC+ voc3 pode selecionar um valor default+ e o SQL Server dei4a voc3 selecionar mesmo valores incompat%veis. Se uma coluna tem um default e uma regra associados a ela+ o valor default no pode violar a regra. .m default 6ue conflite com uma regra nunca inserido+ e a cada ve2 6ue se tentar inserir o default+ o SQL Server gera uma mensagem de erro. Se voc3 selecionar um default 6ue use um dado de tipo incomp/tivel com o tipo de dados da coluna+ 6uando tentar inserir dados nessa coluna+ ser/ inserido o valor #.LL na mesma. ,as+ se a coluna no aceitar valroes #.LL+ o SQL Server reportar/ um erro na hora de tentar inserir valores nessa coluna+ 6ue tentem usar o default Logo+ no selecione nenhum valor para -efault. #a coluna C0uleC+ selecione C0egra;stadoC. Se for criada uma nova tabela+ com uma coluna 6ue utili2a o tipo KestadoK+ ela ter/ essa verifica o da C0egra;stadoC+ automaticamente.

3sando comandos SQL


.m default tambm pode ser criado com o comando C0;7$; -;T7.L$+ como&
create default =reco-efault as ?J.JJ

.ma regra pode ser criada com o comando C0;7$; 0.L;+ como&
create rule 0egra;stado as Uestado in AKS=K+ K8OK+ K0MKB

=ara vincular uma regra ou default a uma coluna ou a um tipo de dados+ usa-se o procedimento spA6indrule ou spA6inde+ault&
spDbindefault nomeAde+ault+ nomeAo6<eto? futureonlL spDbindrule nomeAregra+ nomeAo6<eto? futureonlL

Onde nomeAo6<eto pode ser nomeAta6ela#nomeAcoluna+ no caso de uma coluna ou o nome de um tipo de dados e +utureonlA um parZmetro opcional di2endo 6ue+ no caso de um tipo de dados+ o item afeta apenas colunas a serem criadas+ mas no as e4istentes. =ara desvincular a regra ou default+ usa-se&
spDunbindefault nomeAo6<eto+ futureonlL spDunbindrule nomeAo6<eto+ futureonlL

7o desvincular um default ou uma regra+ se voc3 usar a op o +utureonlA+ colunas e4istentes do tipo de dados no perdem o default ou regra especificado. Tinalmente+ para e4cluir um default ou regra+ podem ser usados os comandos&
drop default nomeAde+ault drop rule nomeAregra

Lembre-se de desvincular um default ou regra 6ue este:am vinculados a uma coluna antes de e4clu%-los.

113

Apostila Microsoft SQL Server 7.0

De+inindo e usando restri/es GconstraintsH


.ma restri=o (constraint* uma propriedade de uma coluna usada para refor ar a integridade de dados. 8eralmente restri 1es so definidas 6uando a tabela criada Acom C0;7$; $7FL;B+ mas podem tambm ser definidas ou retiradas 6uando a tabela :/ contm dados Acom o comando 7L$;0 $7FL;B. Se um comando de altera o A'#S;0$ ou .=-7$;B no satisfa2 uma das restri 1es+ o comando cancelado. $oda restri o tem um nome+ 6ue voc3 pode informar nos comandos C0;7$; $7FL; e 7L$;0 $7FL;. Se voc3 no informar um nome+ o SQL gera um automaticamente+ como =IDtitleauthDauDidDR?Q7fOeJ. -e forma geral+ a sinta4e para uma restri o & CO#S$07'#$ nomeAdaArestri=o de+ini=o Onde a de+ini=o inicia com as palavras =0',70^ I;^+ .#'Q.;+ CH;CI+ TO0;'8# I;^ ou -;T7.L$. 7 palavra CO#S$07'#$ e o nomeAdaArestri=o podem ser omitidos. #esse caso+ o nome ser/ gerado automaticamente.

%5ave 'rim<ria G7&IM$&Q U4QH


7 chave prim8ria (primarL 9eL* de uma tabela uma coluna ou se6g3ncia de colunas 6ue identificam unicamente uma linha dentro da tabela+ ou se:a+ seu valor no pode ser repetido para outras linhas. 7o definir uma chave prim/ria+ automaticamente criado um %ndice na tabela. S5 pode haver uma chave prim/ria na tabela. #o se pode entrar com um valor nulo em 6ual6uer coluna de uma chave prim/ria Alembrando 6ue nulo um valor desconhecido+ diferente de J ou de espa o em brancoB. 0ecomenda-se uma coluna inteira+ pe6uena+ como uma chave prim/ria. #a cria o da tabela+ essa restri o pode ser definida da seguinte forma A6uando a chave prim/ria composta de uma s5 colunaB&
create table Tornecedor A CodTornecedor int not null 'rimarA !eA+ #ome varcharA?JB null+ ;ndereco varcharA?JB null+ $elefone varcharAPJB null B

#ote 6ue KCodTornecedorK deve ter a op o #O$ #.LL. #o poss%vel criar uma chave prim/ria com colunas 6ue podem ser #.LL. Opcionalmente+ poderia ser informado um nome para a restri o+ por e4emplo KChaveTornecedorK. #esse caso+ a segunda linha acima seria&
CodTornecedor int not null constraint %5aveFornecedor 'rimarA !eA+

7gora+ na tabela Tornecedor+ no pode haver duas linhas com o mesmo valor de KCodTornecedorK. Quando a chave composta de duas ou mais colunas+ nesse caso ela tem 6ue ser especificada com a lista de colunas entre par3nteses+ por e4emplo&
create table =rodutoTornecedor ACod=roduto int+ CodTornecedor int+ 'rimarA !eA "%od7roduto; %odFornecedor#B

.ma chave prim/ria pode ser acrescentada ] tabela depois 6ue ela :/ foi criada+ com o comando 7L$;0 $7FL;. =or e4emplo+ vamos acrescentar chaves prim/rias ]s tabelas Cliente e =roduto&
alter table Cliente add 'rimarA !eA nonclustered "%od%liente# alter table =roduto add 'rimarA !eA clustered "%od7roduto#

7 op o #O#CL.S$;0;- di2 respeito ao tipo de %ndice 6ue ser/ criado para a chave prim/ria. Se no especificada+ o %ndice ser/ CL.S$;0;- Av. cap%tulo anteriorB. ;sse %ndice criado ou e4clu%do automaticamente+ :unto com a restri o. ;m 6ual6uer um dos casos pode-se especificar ou no o nome da restri o+ na forma CO#S$07'#$ nome logo antes das palavras C=0',70^ I;^C. 114

Apostila Microsoft SQL Server 7.0

3nicidade G3>IQ34H
.ma restri o .#'Q.; em uma coluna ou grupo de colunas determina 6ue o seu valor deve ser )nico na tabela. ;sse tipo de restri o usado para chaves alternadas+ ou se:a+ valores 6ue se repetem na tabela alm da chave prim/ria. =ode haver v/rias restri 1es .#'Q.; na tabela e as colunas de uma restri o .#'Q.; permitem valores nulos. ;sse tipo de restri o pode ser criada com e4atamente a mesma sinta4e do =0',70^ I;^+ por e4emplo Ano e4ecuteB&
alter table Cliente add uni,ue nonclustered "%od%liente#

$ambm criado um %ndice automaticamente+ 6ue no permite valores duplicados. =ode-se especificar ou no o nome da restri o+ na forma CO#S$07'#$ nome logo antes do C.#'Q.;C..

De+ault
.m default pode ser especificado na forma de restri o. #a defini o da tabela+ como :/ vimos+ poss%vel fa2er isso&
create table Cliente A ... -ataCadastro datetime de+ault "getdate"##+ ... =a%s varcharAPJB de+ault VBrasilVB

O valor de um default pode ser uma constante ou uma chamada fun o do sistema+ como 8;$-7$;AB. =odese especificar ou no o nome da restri o+ na forma CO#S$07'#$ nome logo antes da palavra C-;T7.L$C+ por e4emplo&
=a%s varcharAPJB constraint De+7ais de+ault VBrasilV

Se o default for acrescentado com o comando 7L$;0 $7FL;+ preciso especificar para 6ual coluna ele vai ser ativado+ por e4emplo&
alter table Cliente add default KFrasilK +or 7a6s

Veri+icao G%-4%UH
.ma restri o CH;CI muito semelhante a uma regra+ 6ue verifica os valores 6ue esto sendo inseridos. 7 vantagem 6ue ele pode fa2er refer3ncia a uma ou mais colunas da tabela. =or e4emplo+ vamos verificar+ na tabela Cliente+ se a Cidade e ;stado so informados. Yamos criar uma restri o 6ue impede de inserir o valor de Cidade+ se ;stado no foi informado&
alter table Cliente add c5ec! "not "%idade is not null and 4stado is null##

=ara testar+ tente inserir uma linha com Cidade k K$esteK e ;stado no informado Aou informado k #.LLB. #ote 6ue a e4presso do CH;CI deve estar sempre entre par3nteses. Sub-consultas no so permitidas em CH;CI; para verificar dados em outras tabelas+ use chaves estrangeiras como abai4o. =ode-se especificar ou no o nome da restri o+ na forma CO#S$07'#$ nome logo antes das palavra CCH;CIC. $ecnicamente+ o 6ue uma restri o CH;CI fa2 especificar uma condi o de pes6uisa Fooleana A6ue retorna verdadeiro ou falsoB 6ue aplicada a todos os valores inseridos para a coluna. $odos os valores 6ue no retornem verdadeiro ($0.;* so re:eitados. Yoc3 pode especificar v/rias restri 1es CH;CI para cada coluna.

%5ave estrangeira GF.&4IG> U4QH


.ma forma importante de integridade no banco de dados a integridade re+erencial+ 6ue a verifica o de integridade feita entre duas tabelas. =or e4emplo+ a tabela K=rodutoTornecedorK ser/ usada para relacionar dados de produtos e fornecedores. ;la contm as colunas Cod=roduto e CodTornecedor. 7 primeira deve conter um c5digo v/lido 6ue e4ista na tabela K=rodutoK. 7 outra deve ter um c5digo v/lido e4istente na tabela KTornecedorK. Como validar essa verifica oa 115

Apostila Microsoft SQL Server 7.0

.ma chave estrangeira (foreign 9eL* uma restri o de integridade referencial. ;la consiste de uma coluna ou grupo de colunas cu:o valor deve coincidir com valores de outra tabela. #o nosso caso+ vamos adicionar duas chaves estrangeiras na tabela K=rodutoTornecedorK& Cod=roduto fa2 refer3ncia a 7roduto1%od7roduto e CodTornecedor fa2 refer3ncia a Fornecedor1%odFornecedor&
alter table =rodutoTornecedor add +oreign !eA "%od7roduto# re+erences 7roduto"%od7roduto#+ +oreign !eA "%odFornecedor# re+erences Fornecedor"%odFornecedor#

#ote 6ue a chave prim/ria de =roduto ACod=rodutoB e de Tornecedor ACodTornecedorB+ como foi definido antes. Se fossem especificados apenas os nomes das tabelas+ sem indicar entre par3nteses as colunas+ tambm funcionaria&
alter table =rodutoTornecedor add +oreign !eA "%od7roduto# re+erences 7roduto+ +oreign !eA "%odFornecedor# re+erences Fornecedor

=or6ue nesse caso assumida a chave prim/ria. ,as uma chave estrangeira pode fa2er refer3ncia a colunas 6ue no a chave prim/ria+ desde 6ue possuam uma restri o .#'Q.; definida. Outra forma de criar essas restri 1es em con:unto com a tabela+ da forma&
create table =rodutoTornecedor ACod=roduto int +oreign !eA re+erences 7roduto+ CodTornecedor int +oreign !eA re+erences Fornecedor+ primarL 9eL ACod=roduto+ CodTornecedorBB

;sse tipo de restri o no cria um %ndice automaticamente+ embora muitas ve2es se:a recomend/vel criar para maior desempenho Ageralmente no-clusteredB. =ode-se especificar o nome da restri o opcionalmente+ na forma CO#S$07'#$ nome? logo antes das palavras CTO0;'8# I;^C.

Gerenciando restri/es com comandos SQL


Como :/ vimos+ C0;7$; $7FL; pode criar as restri 1es :unto com a tabela e 7L$;0 $7FL;+ com a cl/usula 7--+ permite adicionar restri 1es depois 6ue a tabela foi criada. =ara e4cluir uma restri o+ preciso saber o seu nome. Se voc3 no informou o nome na cria o+ ter/ 6ue descobri-lo+ o 6ue pode ser feito usando-se&
spDhelp nomeAdaAta6ela

;sse comando mostra informa 1es sobre a tabela+ inclusive os nomes de cada restri o. =ara e4cluir uma restri o+ usa-se 7L$;0 $7FL;+ com a op o -0O= Aindependente do tipo de restri oB. 7 sinta4e genrica &
alter table nomeAdaAta6ela drop constraint nomeAdaArestri=o

.ma restri o tambm pode ser desabilitada temporariamente e depois reabilitada com o comando 7L$;0 $7FL;+ usando as op 1es #OCH;CI Apara desabilitarB e CH;CI Apara habilitarB. 'sso no funciona com =0',70^ I;^+ .#'Q.; ou -;T7.L$+ apenas com as outras restri 1es. 'sso pode ser )til para inserir dados 6ue fu:am aos valores impostos pelas restri 1es. 7 sinta4e &
alter table nomeAdaAta6ela nochec9 constraint nomeAdaArestri=o alter table nomeAdaAta6ela chec9 constraint nomeAdaArestri=o

Gerenciando restri/es com o 4nter'rise Manager


$odas as opera 1es sobre restri 1es 6ue fi2emos podem ser feitas atravs do ;nterprise ,anager. Cli6ue com o boto direito numa tabela+ cli6ue em Design ?able+ selecione alguma coluna+ cli6ue na mesma com o boto direito e selecione =roperties. 7parece a :anela abai4o&

116

Apostila Microsoft SQL Server 7.0

Yoc3 tem a p/gina 'nde4es/IeLs para criar ou remover a chave prim/ria+ e criar ou e4cluir restri 1es .#'Q.;. 7 p/gina C$ablesC permite definir restri 1es CH;CI+ a p/gina C0elationshipsC permite definir as chaves estrangeiras. Os defaults so tratados na lista de colunas+ na :anela de edi o da tabela. #ote 6ue nesta :anela+ voc3 tambm pode definir em 6ual grupo de ar6uivos Aver grupos de ar6uivosB voc3 vai criar cada uma das restri 1es.

11 - Vis/es;Gatil5os e 7rocedimentos
Vis/es GVie sH 7rocedimentos $rma8enados Gatil5os G?riggersH

Objetivos: - 7prender a criar e utili2ar vis1es e saber 6uais as particularidades do acesso a vis1es; - 7prender a criar e utili2ar procedimentos arma2enados; - 7prender a criar e utili2ar triggers(gatilhos*.

117

Apostila Microsoft SQL Server 7.0

Vis/es GVie sH
.ma viso (vie"* uma forma alternativa de olhar os dados contidos em uma ou mais tabelas. =ara definir uma viso+ usa-se um comando S;L;C$ 6ue fa2 uma consulta sobre as tabelas. 7 viso aparece depois como se fosse uma tabela. Yis1es t3m as seguintes vantagens& .ma viso pode restringir 6uais as colunas da tabela 6ue podem ser acessadas Apara leitura ou para modifica oB+ o 6ue )til no caso de controle de acesso+ como veremos mais tarde. .ma consulta S;L;C$ 6ue usada muito fre6gentemente pode ser criada como viso. Com isso+ a cada ve2 6ue ela necess/ria+ basta selecionar dados da viso. Yis1es podem conter valores calculados ou valores de resumo+ o 6ue simplifica a opera o. .ma viso pode ser usada para e4portar dados para outras aplica 1es.

%riando uma viso com o 4nter'rise Manager


=ara criar uma viso com o ;nterprise ,anager+ e4panda um grupo de servidores+ ento o servidor em 6ue est/ o baco de dados onde ser/ criada a viso. Cli6ue com o boto direito em Vie s. 7parece uma tela 6uase id3ntica ] do QuerL -esigner. Caso alguma das se 1es a6ui refrenciadas no este:a aparecendo+ confira na se o em 6ue tratamos do QuerL -esigner+ como ativ/-la+ e entenda melhor cada se o.

R. #a :anela superior Alogo abai4o dos %cones+ chamada de se o do diagrama+ cli6ue com o boto direito+ e selecione $dd ?able. P. #a guia $ables Aou Yie"s+ caso voc3 :/ tenha criado alguma viso e 6ueira 6ue ela fa a parte desta 6ue est/ sendo criadaB+ selecione a tabela Aou visoB a ser adicionada+ e ento cli6ue $dd. Caso voc3 6ueira remover alguma tabela adicionada ao diagrama+ cli6ue na mesma comqo boto direito e selecione &emove. O. 0epita tantas ve2es 6uantas forem as tabelas Aou vis1esB a serem adicionadas ] nova viso. Cli6ue em %lose 6uando tiver escolhido todas as tabelas Aou vis1esB dese:adas. 118

Apostila Microsoft SQL Server 7.0

Q. #a cai4a Column da se o da grade Aparte da :anela logo abai4o de onde esto as tabelas adicionadasB+ selecione as colunas a serem referenciadas na viso. #ote 6ue caso ha:a mais de uma tabela na se o do diagrama+ 6uando voc3 for selecionar a coluna na se o da grade+ aparecer/ o nome completo da coluna Atabela.colunaB. ?. ,ar6ue a cai4a .ut'ut se a coluna deve ser mostrada no resultado da viso. #ote 6ue voc3 tambm pode escolher as colunas 6ue faro parte da viso+ selecionando-as na representa o gr/fica da tabela+ mas as colunas selecionadas dessa maneira faro parte da sa%da por padro. =ara 6ue no apare am na sa%da+ desmar6ue a cai4a .ut'ut. S. =ara agrupar por alguma coluna+ cli6ue com o boto direito na coluna Ana se o da gradeB e selecione Grou' BA. G. #a coluna %riteria+ digite o critrio especificando 6uais linhas retornar; isso determina a cl/usula !H;0;. Se 8roup FL for especificado+ isso determina a cl/usula H7Y'#8. @. #a coluna .r111 entre com 6ual6uer critrio adicional para especificar 6uais linhas a serem retornadas. >. Cli6ue com o boto direito em 6ual6uer lugar da se o da grade+ e ento selecione 7ro'erties. COutput all columnsC mostrar/ todas as linhas da viso no resultado. C-'S$'#C$ valuesC filtra os valores duplicados no resultado. C;ncrLpt vie"C criptografa a defini p da viso. Opcionalmente+ em C$opC+ entre com o n)mero de linhas a serem retornadas no resultado. -igite a palavra =;0C;#$ depois do n)mero para mostrar uma porcentagem das linhas+ no resultado. RJ. Cli6ue com o boto direito em 6ual6uer lugar da se o do diagrama; cli6ue ento em &un Apara ver o resultadoB ou Save Apara salvar a visoB. #ote 6ue na se o SQL+ aparece o c5digo SQL do S;L;C$ envolvido na cria o da viso.

%riando uma viso com comandos SQL


=ara criar uma viso atravs de SQL+ use o comando C0;7$; Y';!. ;sse comando tem a seguinte sinta4e&
C0;7$; Y';! nomeDviso (Acoluna (+...n*B* (!'$H ;#C0^=$'O#* 7S declara oDS;L;C$ (!'$H CH;CI O=$'O#*

nomeAvis=o o nome a ser dados ] viso coluna o nome a ser usado para uma coluna em uma viso. #omear uma coluna em C0;7$; Y';! s5 necess/rio 6uando uma coluna obtida por uma e4presso aritmtica+ uma fun o+ ou uma constante+ ou 6uando duas ou mais colunas poderiam ter o mesmo nome Afre6uentemente por causa de uma :un oB+ ou 6uando a coluna em uma viso recene um nome diferente do nome da coluna da 6ual se originou. Os nomes de colunas tambm podem ser atribu%dos no comando S;L;C$. Caso voc3 6ueira nomear mais de uma coluna+ entre com o nome de cada uma separado por v%rgulas. !'$H ;#C0^=$'O# criptografa as entradas na tabela sAscomments 6ue contm o te4to do comando C0;7$; Y';!. !'$H CH;CI O=$'O# for a todas as modifica 1es de dados e4ecutadas na viso a aderirem aos critrios definidos na declara=oASELE-,. Quando uma coluna modificada atravs de uma viso+ !'$H CH;CI O=$'O# garante 6ue os dados permane am vis%veis atravs da viso depois 6ue as modifica 1es forem efetivadas. Yamos criar uma viso no banco de dados ;4emplo+ usando as tabelas K=rodutoK+ KTornecedorK e K=rodutoTornecedorK. ;ssa viso vai mostrar o nome do fornecedor e o nome do produto. Crie-a digitando o te4to abai4o no QuerL 7nalL2er&
create vie" YisaoTornec=roduto as select f.#ome #omeTornecedor+ p.#ome #ome=roduto from Tornecedor f

119

Apostila Microsoft SQL Server 7.0 inner :oin =rodutoTornecedor pf on f.CodTornecedor k pf.CodTornecedor inner :oin =roduto p on pf.Cod=roduto k p.Cod=roduto

=ara criar uma viso voc3 deve estar posicionado no banco de dados onde a viso ser/ criada ou ento especific/-lo atravs da cl/usula .S;S. 7o criar uma viso+ o te4to do comando acima arma2enado na tabela s&scomments. 7gora+ para testar+ digite&
select d from YisaoTornec=roduto

O resultado ter/ as colunas K#omeTornecedorK e K#ome=rodutoK+ mostrando os dados relacionados entre elas. Yoc3 pode tambm criar uma viso 6ue calcula valores usando colunas das tabelas+ ou usando 80O.= F^ e fun 1es agregadas+ na declara o S;L;C$.

$lterando ou e(cluindo uma viso


=ara alterar uma viso+ voc3 pode usar tanto o ;nterprise ,anager 6uanto o comando SQL+ 7L$;0 Y';!. =ara alter/-la com o ;nterprise ,anager+ selecione a viso 6ue se 6uer alterar+ cli6ue na mesma com o boto direito e selecione Design Vie . 7parecer/ a mesma :anela vista na cria o da viso com o ;nterprise ,anager+ e a% voc3 pode fa2er as altera 1es 6ue :ulgar necess/rias ] viso+ salvar as altera 1es+ e4ecutar a viso+ etc.. $udo da mesma forma 6ue se voc3 estivesse criando uma nova viso. O comando SQL 7L$;0 Y';! tem a seguinte sinta4e&
7L$;0 Y';! nomeDviso (Acoluna (+...n*B* (!'$H ;#C0^=$'O#* 7S declara oDselect (!'$H CH;CI O=$'O#*

$odas as considera 1es feitas a respeito do comando C0;7$; Y';! se aplicam a6ui. Caso voc3 no se lembre do comando usado na cria o da viso Ao comando C0;7$; Y';!B + voc3 pode obt3-lo usando o procedimento spAhelpte@t+ da forma&
spDhelpte4t YisaoTornec=roduto

;ste te4to consultado na tabela s&scomments. 7lgumas linhas podem aparecer 6uebradas no resultado. N importante considerar 6ue a altera o de uma viso no afeta os procedimentos arma2enados ou gatilhos dependentes da mesma e no altera as permiss1es atribu%das ] mesma Averemos mais sobre permiss1es em Seguran aB.

Modi+icando dados atravWs de uma viso


Yoc3 pode e4ecutar um comando .=-7$; em uma viso. Se ela foi baseada em uma )nica tabela+ isso no provoca grandes problemas. Se a op o !'$H CH;CI O=$'O# acima for usada+ as atuali2a 1es devem satisfa2er as condi 1es da cl/usula !H;0; usada na cria o da viso. 'nser 1es com '#S;0$ tambm podem ser feitas. Se a viso baseada em duas ou mais tabelas+ a atuali2a o s5 poss%vel se o comando altera dados de apenas uma tabela. Colunas calculadas no podem ser alteradas. Se foram usadas fun 1es de agrega o+ tambm no poss%vel modificar os dados atravs da viso. #a inser o+ se uma coluna de uma tabela sub:acente no permite nulos A#O$ #.LLB+ no poss%vel inserir linhas na viso+ pois isso dei4aria a coluna sem valor.

120

Apostila Microsoft SQL Server 7.0

7rocedimentos $rma8enados
.m procedimento arma2enado (stored procedures* um con:unto de comandos SQL 6ue so compilados e arma2enados no servidor. ;le pode ser chamado a partir de um comando SQL 6ual6uer. ;m vers1es anteriores do SQL Server+ os procedimentos arma2enados eram uma maneira de pr-compilar parcialmente um plano de e4ecu o. Quando da cria o do procedimento arma2enado+ um plano de e4ecu o parcialmente compilado era arma2enado em uma tabela de sistema. 7 e4ecu o de um procedimento arma2enado era mais eficiente do 6ue a e4ecu o de um comando SQL+ por6ue o SQL Server no precisava compilar um plano de e4cu o completamente+ apenas tinha 6ue terminar a otimi2a o do plano arma2enado para o procedimento. 7lm disso+ o plano de e4ecu o completamente compilado para o procedimento arma2enado era mantido na cache de procedimentos do SQL Server+ significando 6ue e4ecu 1es posteriores do porcedimento arma2enado poderiam usar o plano de e4ecu o pr-compilado. 7 verso G.J do SQL Server apresenta v/rias mudan as no processamento de comandos 6ue estendem muitos dos benef%cios de desempenho dos procedimentos arma2enados para todos os comandos SQL. O SQL Server G.J no salva um plano parcialmente compilado para os procedimentos 6uando os mesmos so criados. .m procedimento arma2enado compilado em tempo de e4ecu o como 6ual6uer outro comando $ransact-SQL. O SQL Server G.J mantm planos de e4ecu o para todos os comandos SQL na cache de procedimentos+ no apenas planos de e4ecu o de procedimentos arma2enados. ;le ento usa um algoritmo eficiente para compara o de novos comandos $ransact-SQL com os comandos $ransact-SQL de planos de e4ecu o e4istentes. Se o SQL Server G.J determinar 6ue um novo comando $ransact-SQL o mesmo 6ue um comando $ransact-SQL de um plano de e4ecu o e4istente+ ele reutili2a o plano. 'sso redu2 o ganho relativo de desempenho+ na pr-compila o de procedimentos arma2enados+ :/ 6ue estende a reutili2a o de planos de e4ecu o para todos os comandos SQL. 7 vantagem de usar procedimentos arma2enados 6ue eles podem encapsular rotinas de uso fre6gente no pr5prio servidor+ e estaro dispon%veis para todas as aplica 1es. =arte da l5gica do sistema pode ser arma2enada no pr5prio banco de dados+ em ve2 de ser codificada v/rias ve2es em cada aplica o.

%riando 'rocedimentos arma8enados


=ara criar um procedimento+ use o comando C0;7$; =0OC;-.0;. =or e4emplo+ o procedimento abai4o recebe um parZmetro AUnomeB e mostra todos os clientes cu:o nome contenha o nome informado&
create procedure FuscaCliente UnomeFusca varcharA?JB as select CodCliente+ #ome from Cliente "here #ome li9e KiK e UnomeFusca e KiK

#ote 6ue os parZmetros so sempre declarados com U+ logo ap5s o nome do procedimento. .m procedimento pode ter 2ero ou mais parZmetros. -eclara-se o nome do procedimento+ e a seguir o tipo de dados do parZmetro. >ota@ ao invs de C0;7$; =0OC;-.0;+ pode-se utili2ar C0;7$; =0OC+ com o mesmo efeito. -entro do procedimento pode haver v/rios comandos S;L;C$ e o resultado desses comandos ser/ o resultado do procedimento. O corpo do procedimento come a com a palavra 7S e vai at o final do procedimento. #o se pode usar os comandos S;$ SHO!=L7#D$;<$+ e S;$ SHO!=L7#D7LL dentro de um procedimento arma2enado+ pois os mesmos devem ser os )nicos comandos de um lote AbatchB. -entro de um procedimento+ nomes de ob:etos usados em alguns comandos devem ser 6ualificados com o nome do propiet/rio do ob:eto+ se outros usu/rios utili2aro o procedimento arma2enado. Os comandos so& 7L$;0 $7FL; C0;7$; '#-;< $odos os comandos -FCC 121

Apostila Microsoft SQL Server 7.0

-0O= $7FL; -0O= '#-;< $0.#C7$; $7FL; .=-7$; S$7$'S$'CS

4(ecutando 'rocedimentos arma8enados


=ara e4ecutar um procedimento+ usa-se o comando ;<;C Aou ;<;C.$;B. 7 palavra C;<;CC pode ser omitida se a chamada de procedimento for o primeiro comando em um script ou vier logo ap5s um marcador de fim de lote Aa palavra C8OCB. =or e4emplo+ e4ecute o procedimento anterior da seguinte forma&
FuscaCliente KanK

O resultado ser/ as linhas da tabela Cliente onde o valor de #ome contm KanK Ase e4istirem tais linhasB. 7o e4ecutar um procedimento+ voc3 pode informar e4plicitamente o nome de cada parZmetro+ por e4emplo&
FuscaCliente UnomeFusca k KanK

'sso permite passar os parZmetros Ase mais de umB fora da ordem em 6ue eles foram definidos no procedimento. ;<;C tambm pode e4ecutar um procedimento em outro servidor. =ara isso+ a sinta4e b/sica &
;<;C nomeAservidor#nomeA6ancoAdeAdados##nomeAprocedimento

%omandos 'ara uso em 'rocedimentos arma8enados


Yoc3 pode declarar uma vari/vel em um procedimento e us/-la para guardar valores. =or e4emplo+ e4clua o procedimento anterior e crie-o novamente como abai4o&
drop procedure FuscaCliente go create procedure FuscaCliente UnomeFusca varcharA?JB as declare Ucontagem int+ Umensagem charARJJB select CodCliente+ #ome from Cliente "here #ome li9e KiK e UnomeFusca e KiK -- conta 6uantas linhas foram encontradas select Ucontagem k countAdB from Cliente "here #ome li9e KiK e UnomeFusca e KiK if Ucontagem k J begin select Umensagem k K#enhum cliente contm CKeUnomeFuscaeKCK print Umensagem print CC end

O comando -;CL70; declara vari/veis+ 6ue so sempre introdu2idas pelo caractere U. #o caso+ Ucontagem uma vari/vel do tipo int e Umensagem do tipo charARJJB. #ote 6ue 6uando voc3 usa um comando S;L;C$+ o resultado pode ser colocado numa vari/vel+ como Ucontagem acima. ;sse resultado no aparece no resultado do S;L;C$. ;ssa tambm a )nica forma de alterar uma vari/vel Avoc3 no pode escrever KUvari/vel k valorK diretamenteB. O comando 'T verifica uma condi o e e4ecuta um comando caso a condi o se:a verdadeira. Se acompanhado da cl/usula ;LS;+ e4ecuta um outro comando caso a condi o se:a falsa. O comando =0'#$ usado acima geralmente usado para mostrar mensagens+ 6ue aparecem 6uando voc3 chama o procedimento interativamente.

122

Apostila Microsoft SQL Server 7.0

Os comandos F;8'# e ;#- so usados para delimitar uma lista de comandos+ 6ue passa a ser tratada como um comando )nico. #o caso acima+ eles so necess/rios para poder e4ecutar tr3s comandos dentro do 'T Ao S;L;C$ e os dois =0'#$B.

%riando 'rocedimentos arma8enados com o 4nter'rise Manager

$ambm poss%vel a cria o de procedimentos arma2enados atravs do ;nterprise ,anger. =ara isso+ devese e4pandir um grupo de servidore+ um servidor+ e o banco de dados onde o procedimento arma2enado ser/ criado. Cli6ue ento com o boto direito em Stored 7rocedures+ e selecione >e Stored 7rocedure. 7parece uma tela como abai4o #essa tela voc3 deve dar o nome 6ue dese:ar ao procedimento+ substituindo o te4to em preto (=0OC;-.0; #7,;* pelo nome 6ue voc3 6uer dar ao procedimento arma2enado sendo criado. Logo depois do 7S+ voc3 deve entrar com o c5digo do procedimento arma2enado+ conforme descrito acima. Yoc3 pode ap5s entrar com o c5digo dese:ado+ clicar no boto %5ec! SAnta(+ 6ue verificar/ se h/ erros de sinta4e nas declara 1es SQL. Quando tiver terminado de entrar com o c5digo do procedimento+ basta clicar em OI 6ue o mesmo ser/ criado.

Gatil5os G?riggersH
.m gatilho (trigger* um tipo de procedimento arma2enado+ 6ue e4ecutado automaticamente 6uando ocorre algum tipo de altera o numa tabela. 8atilhos CdisparamC 6uando ocorre uma opera o '#S;0$+ .=-7$; ou -;L;$; numa tabela. 8eralmente gatilhos so usados para refor ar restri 1es de integridade 6ue no podem ser tratadas pelos recursos mais simples+ como regras+ defaults+ restri 1es+ a op o #O$ #.LL etc. -eve-se usar defaults e restri 1es 6uando eles fornecem toda a funcionalidade necess/ria. .m gatilho tambm pode ser usado para calcular e arma2enar valores automaticamente em outra tabela+ como veremos. 123

Apostila Microsoft SQL Server 7.0

4(em'lo de gatil5os
=ara utili2ar gatilhos+ vamos criar antes algumas tabelas 6ue sero usadas como e4emplo. 7 tabela C#otaTiscalC conter/ os cabe alhos de notas fiscais. 7 tabela C'tem#otaTiscalC ir/ conter itens de nota fiscal relacionados com as notas fiscais. ;4ecute o script abai4o para criar as tabelas&
create table #otaTiscal A#umero#ota numericARJB primarL 9eL+ Yalor$otal numericARJ+PB default AJB B 8O create table 'tem#otaTiscal A#umero#ota numericARJB foreign 9eL references #otaTiscal+ Cod=roduto int foreign 9eL references =roduto+ Quantidade int not null chec9 AQuantidade b JB+ primarL 9eL A#umero#ota+Cod=rodutoB B

Yamos usar gatilhos para duas finalidades& primeiro+ 6uando for e4clu%da uma nota fiscal+ todos os seus itens sero e4clu%dos automaticamente. -epois+ 6uando for inclu%do um item+ a coluna KYalor$otalK ser/ atuali2ada+ na tabela K#otaTiscalK.

%riando gatil5os
8atilhos so sempre criados vinculados a uma determinada tabela. Se a tabela for e4clu%da+ todos os gatilhos dela so e4clu%dos como conse6g3ncia. 7o criar um gatilho+ voc3 pode especificar 6ualAisB aAsB opera oA1esB em 6ue ele ser/ acionado& '#S;0$+ .=-7$; ou -;L;$;.

Gatil5os 'ara insero


Quando feita a incluso de uma ou mais linhas na tabela+ o SQL Server cria uma tabela virtual chamada inserted+ 6ue contm as linhas 6ue sero inclu%das Amas ainda no foramB. ;ssa tabela tem a mesma estrutura da tabela principal. Yoc3 pode consultar dados nessa tabela com o S;L;C$+ da mesma forma 6ue uma tabela real. Yamos criar um gatilho+ chamado 'nclusao'tem#ota+ 6ue ser/ ativado por uma opera o '#S;0$ na tabela 'tem#otaTiscal. =rimeiro ele vai verificar se os valores sendo inseridos possuem uma #otaTiscal relacionada ou no. -igite o seguinte comando&
create trigger 'nclusao'tem#ota on 'tem#otaTiscal for insert as if not e4ists Aselect d from inserted+ #otaTiscal "here inserted.#umero#ota k #otaTiscal.#umero#otaB raiserrorAK;sse item no contm um n)mero de nota v/lidoKB update #otaTiscal set Yalor$otal k Yalor$otal e Aselect i.Quantidade d p.=re o from =roduto p+ inserted i "here p.Cod=roduto k i.Cod=rodutoB "here #umero#ota k Aselect #umero#ota from insertedB

=rimeiro o gatilho usa as tabelas inserted e ota1iscal para consultar se e4iste o valor de #umero#ota na tabela. Caso no e4ista+ o comando 07'S;00O0 gera um erro de e4ecu o+ com uma mensagem 6ue ser/ retornada para a aplica o. ;sse comando efetivamente cancela o comando '#S;0$ 6ue estiver sendo e4ecutado. -epois verifica a 6uantidade 6ue est/ sendo inserida Ainserted.QuantidadeB e multiplica pelo pre o do produto A=roduto.=re oB. ;sse pre o buscado na tabela de produtos+ usando como valor de pes6uisa o c5digo do produto inserido Ainserted.Cod=rodutoB. ;le atuali2a a nota fiscal relacionada com o item 6ue est/ sendo inserido Apara isso verifica "here #umero#otakAselect #umero#ota from insertedBB. 124

Apostila Microsoft SQL Server 7.0

Gatil5os 'ara e(cluso


#a e4cluso+ as linhas da tabela so removidas e colocadas na tabela virtual deleted+ 6ue tem a mesma estrutura da tabela principal. .m gatilho para e4cluso pode consultar deleted para saber 6uais as linhas e4clu%das. Yamos criar um gatilho+ na tabela #otaTiscal para+ 6uando a nota fiscal for e4clu%da+ todos os seus itens de nota relacionados+ na tabela 'tem#otaTiscal+ se:am e4clu%dos em cascata. ;4ecute o seguinte&
create trigger ;4clusao#ota on #otaTiscal for delete as -- e4cluir todos os itens relacionados -- Amesmo #umero#ota 6ue deletedB delete from 'tem#otaTiscal "here #umero#ota in Aselect #umero#ota from deletedB

Gatil5os 'ara atuali8ao


7s tabelas inserted e deleted+ como :/ vimos+ so tabelas virtuais 6ue podem ser usadas dentro de um gatilho. 7 primeira contm os dados 6ue esto sendo inseridos na tabela real e a segunda contm os dados antigos+ 6ue esto sendo inclu%dos. #um gatilho de atuali2a o ATO0 .=-7$;B+ essas duas tabelas tambm esto dispon%veis. #o caso+ deleted permite acessar os dados como eram antes da modifica o e inserted permite acessar os dados depois da atuali2a o. =odemos ento considerar uma atuali2a o como uma e4cluso seguida de uma inser o Ae4cluem-se valores antigos e inserem-se valroes novosB. =or e4emplo+ ao mudar a Quantidade em um 'tem#otaTiscal+ o total da nota deve ser recalculado. =ara isso+ preciso levar em conta a diferen a entre a 6uantidade antiga Adeleted.QuantidadeB e a nova Ainserted.QuantidadeB. Yamos criar um gatilho em 'tem#otaTiscal 6ue fa2 isso&
create trigger 7lteracao'tem#ota on 'tem#otaTiscal for update as if updateAQuantidadeB or updateACod=rodutoB begin update #otaTiscal set Yalor$otal k Yalor$otal e Aselect p.=re o d Ai.Quantidade - d.QuantidadeB from =roduto p inner :oin inserted i on p.Cod=roduto k i.Cod=roduto inner :oin deleted d on i.Cod=roduto k d.Cod=roduto and i.#umero#ota k d.#umero#otaB end

#ote acima o uso de Kif updateAnomeAdaAcolunaBK. -entro de um gatilho de atuali2a o+ isso permite descobrir se a coluna est/ sendo alterada ou no. 'sso para evitar trabalho desnecess/rio se no estiver sendo modificada uma dessas colunas.

%riando gatil5os 'ara mFlti'las a/es


.m gatilho pode ser criado para uma tabela para m)ltiplas opera 1es nessa tabela. =or e4emplo+ para criar um gatilho usado em '#S;0$+ .=-7$; e -;L;$;+ usa-se uma sinta4e+ como&
create trigger nomeAdoAgatilho on nomeAdaAta6ela for '#S;0$+ .=-7$;+ -;L;$; as te@toAdoAgatilho

.utros comandos
;m gatilhos+ assim como em procedimentos arma2enados+ poss%vel declarar vari/veis e usar comandos como 'T+ F;8'#..;#- etc. 125

Apostila Microsoft SQL Server 7.0

7lguns comandos no so permitidos dentro de um gatilho. ;stes so&


7L$;0 -7$7F7S; 7L$;0 =0OC;-.0; 7L$;0 $7FL; 7L$;0 $0'88;0 7L$;0 Y';! C0;7$; -7$7F7S; C0;7$; -;T7.L$ C0;7$; '#-;< C0;7$; =0OC;-.0; C0;7$; 0.L; C0;7$; SCH;,7 C0;7$; $7FL; C0;7$; $0'88;0 C0;7$; Y';! -;#^ -'SI '#'$ -'SI 0;S'h; -0O= -7$7F7S; -0O= -;T7.L$ -0O= '#-;< -0O= =0OC;-.0; -0O= 0.L; -0O= $7FL; -0O= $0'88;0 -0O= Y';! 807#$ LO7- -7$7F7S; LO7- LO8 0;S$O0; -7$7F7S; 0;S$O0; LO8 0;YOI; 0;CO#T'8.0; $0.#C7$; $7FL; .=-7$; S$7$'S$'CS

1* - Segurana
%onceitos %riando logins do SQL Server %riando usu<rios do banco de dados %riando gru'os de usu<rios De+inindo 'ermiss/es

Objetivos: - Conhecer os recursos do SQL Server para controle de acesso ao banco de dados; - 7prender a criar logins de usu/rio e usu/rios do banco de dados.

%onceitos
Os recursos de seguran a do SQL Server permitem determinar& Quais usu/rios podem usar o SQL Server. Quais usu/rios podem acessar cada banco de dados. 7s permiss1es de acesso para cada ob:eto de banco de dados e para cada usu/rio. 7s permiss1es de acesso para cada comando SQL em cada banco de dados+ para cada usu/rio. ;4istem 6uatro barreiras para 6ue os usu/rios possam acessar dados em um servidor SQL Server& O sistema operacional de rede; o usu/rio deve efetuar logon na rede. 7 autentica o do SQL Server; o usu/rio deve ter uma conta no SQL Server. 7 autentica o de banco de dados; o '- do usu/rio deve e4istir em uma tabela de sistema do banco de dados Amais especificamente+ a tabela s&susersB 7 autentica o de ob:etos; o usu/rio deve ter permiss1es para acessar 6ual6uer ob:eto Atabelas+ vis1es+ entre outrosB.

126

Apostila Microsoft SQL Server 7.0

$utenticao de usu<rios
Quando um usu/rio tenta acessar um servidor SQL Server+ ele pode ser autenticado de duas maneiras& pela 7utentica o do !indo"s #$ ou pela 7utentica o do SQL Server. #o confunda isso com modo de seguran a+ 6ue um t5pico muito semelhante. 7 autentica o do !indo"s #$ se aproveita da seguran a embutida no !indo"s #$ Server+ a 6ual inclui caracter%sticas como senhas criptografadas+ senhas 6ue e4piram+ tamanho m%nimo de senhas+ blo6ueio de conta+ e restri o de acesso com base em nomes de computador. O SQL Server pode confiar no !indo"s #$ para autenticar logins+ ou pode ele mesmo autenticar os logins. Quando o !indo"s #$ autentica o login+ o SQL Server processa o login assim& Quando um usu/rio se conecta ao SQL Server+ o cliente abre uma cone4o confi/vel com o SQL Server+ na 6ual so passadas as contas de usu/rio e de grupo do cliente para o SQL Server. .ma cone@=o con+i8vel (trusted connection* uma cone4o de rede com o SQL Server 6ue consegue ser autenticada pelo !indo"s #$. =ara ocorrer uma cone4o confi/vel+ as bibliotecas de rede (netlibraries* #amed =ipes ou ,ultiprotocol devem estar sendo utili2adas tanto pelo cliente 6uanto pelo servidor SQL Server. Caso a biblioteca de rede sendo utili2ada pelo cliente ou pelo servidor no se:a uma dessas duas+ a cone4o de rede n=o-con+i8vel e a autentica o do !indo"s #$ no pode ser utili2ada. Se o SQL Server encontra a conta de usu/rio ou de grupo na lista de contas de login do SQL Server+ na tabela de sistema s&slogins+ ele aceita a cone4o. O SQL Server no precisa de revalidar uma senha+ :/ 6ue o !indo"s #$ :/ a validou. #esse caso+ a conta de login no SQL Server+ do usu/rio+ a conta de usu/rio ou de grupo do !indo"s #$+ a 6ue tiver sido definida como a conta de login do SQL Server. Se v/rios computadores com servidores SQL Server participam em um dom%nio ou um grupo de dom%nios confi/veis+ basta efetuar logon em um )nico dom%nio para ter acesso a todos os servidores SQL Server. >ota@ O SQL Server no ir/ reconhecer grupos nem usu/rios 6ue foram e4clu%dos e depois recriados no !indo"s #$. Os grupos devem ser e4clu%dos do SQL Server e adicionados novamente+ pois o SQL Server usa o identificador de seguran a AS'-B do !indo"s #$ para identificar um grupo ou usu/rio. ; um grupo ou usu/rio e4clu%do e depois criado novamente com o mesmo nome no !indo"s #$+ ter/ um S'- diferente. Quando o SQL Server autentica o login+ ocorre o seguinte& Quando um usu/rio se conecta ao SQL Server com um nome de usu/rio e senha de uma conta do SQL Server+ o mesmo verifica 6ue um login e4iste na tabela de sistema s&slogins e 6ue a senha especificada igual a 6ue se tem gravada. Se o SQL Server no tem uma conta de login com esse nome de usu/rio ou a senha no a 6ue se tem gravada+ a autentica o falha e a cone4o recusada.

Modos de segurana
.m modo de seguran a se refere a como o -F7 Aadministrador do banco de dadosB configura o SQL Server para autenticar usu/rios. .m servidor pode usar um de dois modos de seguran a& !indo"s #$ e mista (mi4ed*. 7 diferen a entre esses modos de seguran a como a seguran a do SQL Server se integra com o !indo"s #$& Modo de autentica=o mista do SQL Server MSQL Server Mi@ed Authentication Securit& ModeN: #esse nidi de seguran a+ um usu/rio pode conectar-se ao SQL Server usando a 7utentica o do !indo"s #$+ ou a 7utentica o do SQL Server. 7o tentar conectar-se com o SQL Server+ verifica-se se voc3 est/ usando ou no uma cone4o confi/vel. Ocorre ento o seguinte& Se voc3 estiver usando uma cone4o confi/vel+ o SQL Server tentar/ autenticar o seu login do !indo"s #$+ verificando se o seu nome de usu/rio tem permisso para conectar-se ao servidor SQL 127

Apostila Microsoft SQL Server 7.0

Server. Caso seu nome de usu/rio no tenha permisso para conectar-se ao SQL Server+ lhe ser/ pedido um nome de login e senha. Caso voc3 no este:a usando uma cone4o confi/vel+ lhe ser/ logo pedido um login e senha. Seu login e senha so verificados na tabela de sistema s&slogins. Se o nome de login for v/lido e a senha correta+ voc3 poder/ conectar-se ao servidor SQL Server. Quando o SQL Server lhe pede um login e senha+ ele usa seu pr5prio cadastro de usu/rios+ independente do banco de dados de contas do !indo"s #$. Os logins de usu/rio devem ser cadastrados no SQL Server. Modo de autentica=o de segurana do )indo.s , M)indo.s , Server Authtentication Securit& ModeN: Se se opta por usar o modo de seguran a do !indo"s #$+ s5 o mecanismo de autentica o do !indo"s #$ utili2ado para autenticar usu/rios para o SQL Server. O nome de usu/rio 6ue foi usado para se conectar ] rede #$ o mesmo nome usado para o SQL Server. ;sse nome de usu/rio e a senha no precisam ser informados novamente. Se o usu/rio for autori2ado Aou se:a+ tiver um registro na tabela de sistema s&sloginsB a conectar-se ao SQL Server+ ento ele poder/ conectar-se. #esse modo de seguran a+ s5 poss%vel se conectar ao SQL Server atravs de uma cone@=o con+i8vel. Se esta op o for escolhida+ deve-se ter certe2a de 6ue todos os clientes este:am rodando em sistemas !indo"s+ e 6ue possam conectar-se ao SQL Server usando uma cone4o confi/vel. Yantagens de cada um dos modos de seguran a Modo de segurana do Modo de segurana mista Dindo s >? 0ecursos avan ados de Clientes no-!indo"s e usando bro"ser podem usar esse seguran a modo para conectar-se. 7dicionar grupos como uma Camada adicional de seguran a sobre o !indo"s #$ conta. 7cesso r/pido.

De+inindo o modo de segurana


=ara definir o modo de seguran a+ voc3 deve fa2er o seguinte& #o ;nterprise ,anager+ selecione o servidor cu:o modo de seguran a voc3 6uer definir. Cli6ue com o boto direito e selecione 7ro'erties. #a tela 6ue aparecer+ selecione a guia SecuritA.

128

Apostila Microsoft SQL Server 7.0

;m 7uthentication+ caso voc3 selecione CSQL Server and !indo"s #$C+ o modo de seguran a mista Ami4ed modeB estar/ sendo definido. Caso voc3 selecione C!indo"s #$ onlLC+ o modo de seguran a do !indo"s #$ estar/ sendo definido. ;m 6ual6uer dos casos+ voc3 deve parar e reiniciar o servi o ,SSQL Server para 6ue a mudan a tenha efeito. =ara isso+ voc3 pode usar+ entre outras ferramentas+ o Service ,anager.

Logins
.m login do SQL Server Aou login (DB um nome 6ue identifica um usu/rio para o SQL Server. Cada login tem uma senha+ 6ue deve ser informada no caso da seguran a mista Aver abai4oB. O SQL Server cria automaticamente um login chamado KsaK Aadministrador do sistemaB+ 6ue no deve ser e4clu%do. O KsaK tem permisso para fa2er praticamente tudo no banco de dados& criar bancos de dados+ tabelas+ criar outros logins etc. O sa pode conceder permiss1es para outros usu/rios poderem fa2er algumas tarefas. $ambm criado automaticamente o login F.'L$'#E7dministrators. ;sse login a conta padro de login para todos os administradores do !indo"s #$. ;sse login tem todos os direitos no SQL Server e em todos os bancos de dados.

>omes de usu<rio no banco de dados


Se voc3 possui um login+ no 6uer di2er 6ue tenha acesso a todos os bancos de dados. N preciso ter tambm um nome de usu8rio de 6anco de dados (database user '-*+ 6ue relacionado com o login e permite acesso a um banco de dados espec%fico. O nome de usu/rio pode ser espec%fico do login. O usu/rio 6ue cria um banco de dados o dono do banco de dados (database o"ner*. -entro do banco de dados+ o dono conhecido pelo nome especial KdboK. Outros usu/rios podem ter nomes diferentes+ geralmente de acordo com o seu login. O dono do banco de dados pode conceder permiss1es para outros usu/rios de criar e e4cluir ob:etos dentro do banco de dados. 129

Apostila Microsoft SQL Server 7.0

O usu/rio 6ue cria um ob:eto Atabela+ viso+ procedimento etc.B no banco de dados o dono deste ob:eto. O dono tem inicialmente todas as permiss1es no ob:eto criado+ mas ele pode conceder essas permiss1es a outros usu/rios se dese:ar. .m login pode ter um alias (apelido* dentro de um banco de dados+ 6ue o nome de outro usu/rio. #esse caso+ dentro da6uele banco de dados+ ele funciona como se fosse a6uele usu/rio e tem as mesmas permiss1es dele. Y/rios usu/rios AloginsB diferentes podem ter o mesmo alias. ;sse um recurso 6ue e4iste no SQL Server G.J+ apenas para compatibilidade com vers1es anteriores+ :/ 6ue atravs de papis (roles* e da atribui o de permiss1es aos papis+ o 6ue era feito usando aliases+ pode ser feito de maneira muito mais efica2. O usu/rio guest (convidado* um nome especial 6ue e4iste em todo banco de dados e permite a 6ual6uer login usar o banco de dados+ mesmo 6ue no tenha um nome de usu/rio relacionado.

7a'Wis G&olesH
#a sua ess3ncia+ um papel (role* um grupo de usu/rios 6ue t3m necessidades semelhantes de acesso ao SQL Server. ,as+ os papis so um pouco mais comple4os do 6ue isso. =or e4emplo+ h/ uma por o de tipos diferentes de papis do SQL Server+ incluindo os seguintes& =apis predefinidos de servidor (=redefined server roles* =apis predefinidos de bancos de dados (=redefined database roles* O papel p)blico (=ublic role* =apis personali2ados de bancos de dados (Custom database roles* *apOis de aplica=o so um tipo especial de papis 6ue so atribu%dos a uma aplica o espec%fica 6ue foi pro:etada para acessar os dados do SQL Server. =or e4emplo+ se um usu/rio precisa de acessar um tipo espec%fico de dados+ ao invs de atribuir permisso e4pl%cita ao usu/rio para acessar os dados+ o acesso aos dados dado ao usu/rio utili2ando a aplica o ] 6ual foi atribu%do um papel de aplica o. 'sso significa 6ue um usu/rio apenas ter/ acesso aos dados usando essa aplica o espec%fica. =apis de aplica o so atribu%dos a aplica 1es+ no a usu/rios.

7a'Wis 'rede+inidos de servidor G7rede+ined Server &olesH


;m vers1es anteriores do SQL Server era dif%cil delegar atreas administrativas a outras pessoas. =or e4emplo+ voc3 poderia 6uerer se dsignar como o -F7 senior+ com a habilidade de e4cutar 6ual6uer tarefa no SQL Server+ 6ue precisasse ser e4ecutada. 7lm disso+ voc3 poderia 6uerer delegar algumas das tarefas administrativas para outros+ e ao mesmo tempo restringir e4atamente o 6ue eles poderiam fa2er. ;mbora isso fosse poss%vel em vers1es anteriores do SQL Server+ era dif%cil de implementar. O SQL Server G.J solucionou esse problema incluindo o 6ue so chamados de papis predefinidos de servidor Atambm conhceidos como papis fi4os de servidorB. O SQL Server G.J inclui um total de sete diferentes papis predefinidos de servidor+ cada um com um con:unto de permiss1es administrativas diferentes. 'sso te permite definir v/rios a:udantes administrativos+ com diferentes n%veis de capacidade+ para a:ud/-lo a administrar o SQL Server. $udo 6ue voc3 precisa fa2er adicionar o login dos mesmos ao papel dese:ado. $odos os papis de servidor so predefinidos pelo SQL Server. Yoc3 no pode criar seus pr5prios papis de servidor. Os papis predefinidos de servidor so definidos ao n%vel do servidor SQL Server+ no ao n%vel de banco de dados. 'sso significa 6ue 6ual6uer um 6ue perten a a um desse papis predefinidos de servidor tem permiss1es espec%ficas para gerenciar os servidore SQL Server e todos os bancos de dados gerenciados pelo SQL Server. 7s tarefas administrativas 6ue cada login pode e4ecutar dependem apenas de 6ual papel predefinido de servidor a 6ue ele perten a. Os papis predefinidos de servidor so& 130

7dministradores de sistema (SLstem 7dministrators* AsLsadminB& ;ste o mais poderoso de todos os papis. Qual6uer um 6ue perten a a esse papel pode reali2ar 6ual6uer tarefa no SQL Server+ inclusive sobrep_r-se a 6ual6uer dos outros papis predefinidos de servidor. ;sse papel o e6uivalente ] conta S7 em vers1es anteriores do SQL Server Aa conta S7+ por padro fa2 parte desse grupoB. Criadores de bancos de dados (-atabase Creators* AdbcreatorB& ;les t3m a habilidade de criar e alterar bancos de dados individuais. 7dministradores de discos (-is9 7dministrators* Adis9adminB& $3m a capacidade de gerenciar ar6uivos de disco. 7dministradores de processos (=rocess 7dministrators* AprocessadminB& $3m a capacidade de gerenciar os v/rios processos sendo e4ecutados no SQL Server. 7dministradores de seguran a (SecuritL 7dministrators* AsecuritLadminB& ;les t3m a capacidade de gerenciar logins para um servidor. 7dministradores de servidor (Sever 7dministrators* AserveradminB& $3m a capacidade de reali2ar configura 1es a n%vel de servidor. 7dministradores de configura o (Setup 7dministrators* AsetupadminB& $3m a capacidade de instalar a replica o no SQL Server+ e gerenciar procedimentos arma2enados. 8eralmente+ voc3 no precisar/ de todos esses papis 6uando for delegar tarefas administrativas do SQL Server para a:udantes. ;m muitos casos+ voc3 provavelmente s5 atribuir/ seus a:udantes a um ou dois papis+ dando-lhes as permiss1es espec%ficas 6ue eles precisam para e4ecutar as tarefas 6ue voc3 delegou a eles. Os usu/rios podem pertencer a mais de um papel ao mesmo tempo.

Apostila Microsoft SQL Server 7.0

7a'Wis 'rede+inidos de bancos de dados G7rede+ined Database &olesH


Sob v/rios aspectos+ os papis prdefinidos de bancos de addos so semelhantes aos papis predefinidos de servidor. =apis predefinidos de bancos de dados atribuem tipos espec%ficos de permiss1es a para cada um dos nove papis predefinidos. 7 principal diferen a entre papis predefinidos de servidor e papis predefinidos de bancos de dados 6ue os papis predefinidos de bancos de dados so espec%ficos para cada banco de dados e no se estendem a v/rios bancos de dados. Como os papis predefinidos de servidor+ os papis predefinidos de bancos de dados podem ser usados por voc3 para a:ud/-lo a distribuir as tarefas administrativas do SQL Server para outros. Os papis predefinidos de bancos de dados so& =ropriet/rio do banco de dados (-atabase O"ner* AdbDo"nerB& ;les t3m permiss1es de propriedades em um banco de dados e podem e4ecutar 6ual6uer tarefa de configura o ou manuten o em um banco de dados particular. ;les tambm podem e4ecutar todas as atividades dos outros papis de namcos de dados+ e sobrep_r-se a 6ual6uer dos outros papis. ;m vers1es anteriores do SQL Server+ esse papel muito semelhante ao '- de usu/rio de banco de dados -FO. Aa conta -FO fa2 parte desse papel em todos os bancos de dadosB 7dministrador de acesso do banco de dados (-atabase 7ccess 7dministrator* AdbDaccessadminB& $3m a capacidade de gerenciar '-s de usu/rio de banco de dados para um banco de dados. Leitor de dados do banco de dados (-atabase -ata 0eader* AdbDdatareaderB& $3m a capacidade de ver 6uais6uer dados de todas as tabelas em um banco de dados. ;scritor de dados do banco de dados (-atabase -ata !riter* AdbDdata"riterB& $3m a habilidade de inserir+ modificar ou e4cluir 6uais6uer dados de todas as tabelas em um banco de dados. 7dministrador da linguagem de defini o de dados (-atabase -ata -efinition Language 7dministrator* AdbDddladminB& =odem criar+ modificar+ ou e4cluir 6uais6uer ob:etos de um banco de dados Atabelas+ vis1es+ procedimentos arma2enados....B. Operador de bac9up do banco de dados (-atabase Fac9up Operator* AdbDdumpoperatorB& =odem reali2ar bac9ups do banco de dados. 131

#ega o de leitura no banco de dados -atabase -enL -ata 0eader AdbDdenLdatareaderB& .m papel especial 6ue permite a seus membros mudar o es6uema do banco de dados+ mas sem poder ver os dados no banco de dados. #ega o de escrita no banco de dados (-atabase -enL -ata !riter* AdbDdenLdata"riterB& .m papel especial 6ue evita 6ue seus membros alterem 6ual6uer dado em um banco de dados. Como o -F7+ voc3 provavelmente no usar/ a maioria desses papis predefinidos de bancos de dados. N prov/vel 6ue voc3 precise de apenas alguns de modo a delegar algumas de suas tarefas administrativas para seus a:udantes. ; como com os papis predefinidos d servidor+ usu/rios podem pertencer a mais de um papel ao mesmo tempo.

Apostila Microsoft SQL Server 7.0

. 'a'el 'Fblico G7ublic &oleH


O papel p)blico semelhante ao grupo p)blico 6ue era usado em vers1es anteriores do SQL Sever. Quando criado+ todo banco de dados tem o papel p)blico por padro+ assim como todo banco de dados tem papis predefinidos de banco de dados. O 6ue )nico nesse papel 6ue todos '-s de usu/rio em um banco de dados automaticamente pertencem a este papel. Sob v/rios aspectos+ ele semlhante ao grupo $odos (;verLone* do !indo"s #$ Server. Yoc3 no pode adicionar ou remover usu/rios deste papel+ ou modific/-lo de 6ual6uer maneira. $udo 6ue pode ser feito atribuir permiss1es a ele. Quais6uer permiss1es atribu%das ao papl p)blico so automaticamente atribu%das a todos '-s de usu/rio no banco de dados. O papel p)blico especialmente )til se voc3 6uiser atribuir as mesmas permiss1es para todos os usu/rios de banco de dados em um banco de dados+ ao mesmo tempo.

7a'Wis 'ersonali8ados de banco de dados G%ustom Database &olesH


Como uma regra geral+ voc3 ir/ 6uerer se aproveitar do m/4imo de papis predefinidos poss%vel. ,as voc3 pode encontrar situa 1es onde nenhum dos grupos predefinidos vai de encontro ]s suas necessidades. Se esse for o caso+ o SQL Server permite 6ue voc3 crie seus pr5prios papis de banco de dados. Se voc3 estiver utili2ando a autentica o do !indo"s #$ e usa grupos globais do #$ Server para gerenciar usu/rios+ voc3 perceber/ 6ue voc3 no precisa realmente de criar papis personali2ados de banco de dados+ :/ 6ue voc3 obtem o mesmo efeitos com o uso de grupos globais ao invs de agrupar usu/rios semelhantes. ,as se voc3 no for um administrador do #$ Server e no tiver permisso para criar os grupos globais 6ue voc3 precisa+ ou se voc3 estiver utili2ando a autentica o do SQL Server+ voc3 pode no ter outra escolha+ a no ser criar os papis personali2ados de bancos de dados para a:ud/-lo a gerenciar melhor seus usu/rios. Quando for criar papis personali2ados de banco de dados+ tenha o seguinte em mente& =apis personali2ados de banco de dados+ como ocorre com 6ual6eur papel do SQL Server+ so utili2ados para agrupar usu/rios semelhantes 6ue precisam do mesmo con:unto de permiss1es para acessar o SQL Server. =apis personali2ados de bancos de dados so criados dentro de um banco de dados e no podem se estender a v/rios bancos de dados. .su/rios podem pertencer a mais de um papel+ se:a personali2ado ou predefinido. =apis personali2ados podem incluir usu/rios do #$ Server+ grupos globais do #$ Server+ '-s de usu/rios de bancos de dados do SQL Server+ e outros papis do SQL Server. >ota@ Se voc3 tiver permisso para a cria o de grupos globais e utili2ar a autentica o do !indo"s #$+ voc3 deve sempre usar grupos globais ao invs de papis personali2ados de banco de dados. O uso de grupos globais ao invs de papis personali2ados de banco de dados geralmente redu2 o tempo necess/rio para gerenciar as contas de usu/rio do SQL Server e do #$ Server+ pois grupos globais funcionam com ambos. =apis personali2ados de banco de dados funcionam apenas no SQL Server. 7lm disso+ grupos globais podem se estender a v/rios bancos de dados+ en6uanto papis so espec%ficos para cada banco de dados+ o 6ue os torna menos fle4%veis 6ue grupos globais. 132

Apostila Microsoft SQL Server 7.0

%riando e con+igurando 'a'Wis de banco de dados


Yeremos agora como criar um papel personali2ado de banco de dados. =ara isso+ n o ;nterprise ,anager+ e4panda o banco de dados para o 6ual voc3 6uer criar o papel. Cli6ue em &oles com o boto direito e selecione >e Database &ole. 7parece a cai4a de di/logo de cria o de papis de banco de dados.

#a cai4a C#ameC digite o nome do papel de banco de dados 6ue voc3 6uer criar . -epois+ voc3 deve informar se voc3 est/ criando um papel padro (Standard 0ole* ou um papel de aplica o (7pplication 0ole*. Se voc3 escolher criar um papel padro+ voc3 tem a op o de adicionar um ou mais '-s de usu/rios de banco de dados ao papel agora Aclicando em $dd111B. Ou ento+ voc3 pode pular este passo agora e adicionar '-s de usu/rios de banco de dados posteriormente+ usando as tcnicas mostradas em 8erenciando usu/rios . Se voc3 escolher papel de aplica o+ voc3 tambm dever informar uma senha. -epois de terminar de informar o 6ue foi pedido+ cli6ue em O9 para criar o novo papel de banco de dados. 'sso fechar/ a cai4a de di/logo acima e ento o novo papel ser/ mostrado no ;nterprise ,anager. >ota@ Lembre-se 6ue papis de banco de dados so criados para cada banco de dados. ;les no so compartilhados entre bancos de dados.

4(cluindo um 'a'el de banco de dados


Como parte da sua responsabilidade cotidiana de manter o SQL Server+ voc3 achar/ necess/rio ]s ve2es remover '-s de usu/rio de bancos de dados e+ com menor fre6g3ncia+ remover papis de banco de dados 6ue no se:am mais necess/rios. 7 remo o de '-s de usu/rio de banco de dados ser/ vista em Como e4cluir um '- de um usu/rio de banco de dadosB. Os )nicos papis de banco de dados 6ue podem ser removidos so a6ueles 6ue foram criados por voc3 ou por outro -F7. #o poss%vel remover papis predefinidos de banco de dados. Se um papel de banco de dados tem um ou mais '-s de usu/rio de banco de dados associado a ele+ voc3 deve remov3-los do papel 133

Apostila Microsoft SQL Server 7.0

antes de tentar e4cluir o papel. Se voc3 tentar e4cluir um papel sem antes remover os '-s de usu/rios a ele associados+ voc3 ver/ uma mensagem de erro. =ara e4cluir um papel de banco de dados+ fa a o seguinte& R. #o ;nterprise ,anager+ e4panda o banco de dados em 6ue est/ definido o papel 6ue voc3 6uer e4cluir. P. Cli6ue em 0oles e+ no lado direito da tela+ selecione o papel a ser e4clu%do. -3 um duplo cli6ue no mesmo+ e verifi6ue se em bai4o de 3ser+ h/ algum usu/rio listado. O. Caso ha:a algum usu/rio+ remova-o selecionando-o e clicando no boto &emove. Q. Teito isso+ cli6ue em O9+ selecione o papel a ser e4clu%do+ cli6ue no mesmo com o boto direito e selecione Delete. ?. Lhe ser/ perguntado se voc3 de fato 6uer e4cluir o papel. Confirme+ clicando em Qes. Caso voc3 saiba de antemo 6ue no h/ usu/rios associados a esse papel+ v/ direto para o passo Q.

%on+igurando um 'a'el de servidor


Como :/ foi visto+ papis de servidor so usados para atribuir aos logins v/rios n%veis de privilgios administrativos no SQL Server. Yoc3 pode atribuir um login a um papel de servidor 6uando voc3 cria um login Acomo visto em 8erenciando usu/riosB+ ou voc3 pode fa2er como ser/ descrito a6ui. Os papis de servidor v3m embutidos no SQL Server. #ovos papis de servidor no podem ser criados nem os e4istentes podem ser deletados. Sua )nica op o ao configurar um papel de servidor adicionar ou remover logins do papel de servidor em 6uesto.

=ara adicionar ou remover um loginm de um papel de servidor+ fa a o seguinte& #o ;nterprise ,anager+ selecione o servidor SQL Server cu:os papis voc3 6uer configurar. ;4pandao e abra a pasta SecuritA. Cli6ue em Server &oles. #o lado direito da tela aparecem os papis de servidor. Selecione o papel ao 6ual voc3 6uer adicionar algum login. 134

Apostila Microsoft SQL Server 7.0

Cli6ue no mesmo com o boto direito e selecione =roperties. 7parece a :anela abai4o&

=ara adicionar um login ao papel de servidor+ cli6ue no boto $dd. 7parece a cai4a de di/logo C7dicionar ,embrosC (7dd ,ebers*+ com todos os logins definidos para o servidor. ;scolha um ou mais logins para adicionar a esse papel de servidor. Cada ve2 6ue voc3 selecionar um login+ ele ficar/ marcado+ e assim ficar/ at 6ue voc3 o cli6ue de novo. -epois de selecionados todos os logins 6ue voc3 6uer adicionados ao papel de servidor+ cli6ue em O9. ;nto voc3 volta para a cai4a de di/logo de propriedades do papel de servidor Amostrada acimaB. Caso voc3 6ueira remover algum login 6ue fa2 parte de um papel de servidor+ selecione-o+ na cai4a de di/logo de propriedades do papel de servidor+ e cli6ue no boto &emove. Quando voc3 tiver adicionado e/ou removido todos os logins dese:ados a esse papel de servidor+ cli6ue em O9 para concluir. Yoc3 pode adicionar logins aos papis de servidor sempre 6ue achar necess/rio. ,as lembre-se 6ue o ato de delegar privilgios administrativos a usu/rios ]s ve2es pode ser arriscado+ e voc3 no ir/ 6uerer dar privilgios demais para usu/rios. 7penas d3 aos logins os privilgios absolutamente m%nimos 6ue eles precisam para completar as tarefas 6ue voc3 os atribuiu.

Visuali8ando in+orma/es de segurana


Visuali8ando in+orma/es de logins do SQL Server
#o ;nterprise ,anager+ e4panda o servidor cu:as contas voc3 6uer obter informa 1es+ cli6ue na pasta SecuritL+ e ento em logins. 7parece uma tela semelhante ] mostrada abai4o&

Observe na parte direita da tela estas informa 1es& 7 coluna C#ameC mostra cada login e4istente. Se algum login tiver um nome de dom%nio antes do nome do login+ como acima em C,70$'#SES6le4ecutivoC+ significa 6ue a conta usa a autentica o do !indo"s #$. Os 6ue no so precedidos por um nome de dom%nio usam a autentica o do SQL Server+ como CaC e CsaC na figura acima. 7 coluna C$LpeC d/ mais informa 1es sobre o login. Se o tipo C#$ .serC+ a conta foi o #$ Server e adicionada como um login do SQL Server. Se o tipo C#$ 8roupC+ isso significa 6ue 6ual6uer usu/rio 135

Apostila Microsoft SQL Server 7.0

6ue fa a parte desse grupo do !indo"s #$ pode acessar o SQL Server utili2ando sua conta de grupo como login. Se o tipo CStandardC+ esse login foi criado usando com o ;nterprise ,anager. 7 coluna C-efault -atabaseC mostra 6ual banco de dados cada usu/rio usa como seu banco de dados padro. N o banco de dados no 6ual eles so automaticamente logados 6uando eles acessam o SQL Server pela primeira ve2. 7 coluna C.serC mostra o nome de usu/rio 6ue este usu/rio recebeu no banco de dados padro Ao 6ue ele automaticamente logado da primeira ve2 6ue efetua logon no SQL Server. 7 coluna C-efault LanguageC mostra a l%ngua espec%fica para o login. O padro ingl3s (;nglish*. =ara ver informa 1es espec%ficas sobre 6ual6uer um dos logins+ cli6ue no mesmo com o boto direito+ e selecione =roperties. 7parece a tela abai4o&

76ui voc3 pode ver e configurar 6uase todas op 1es de login. ;ssa tela tem tr3s guias. #a guia 8eneral+ voc3 pode alterar a senha para esse login (=ass"ord*+ e definir seu banco de dados e linguagem padro A(-atabase* e (Language*B. #a guia CServer 0olesC mostra a 6uais papis de servidor o login pertence. 7 guia C-atabase 7ccessC mostra a 6uais bancos de dados o login tem acesso Aou se:a+ tem um login definido na tabela s&slogins do banco de dadosB+ alm de mostrar a 6uais papis de banco de dados o usu/rio pertence+ em cada banco de dados. Cli6ue em Cancel para sair da :abela de propriedades do login.

Visuali8ando in+orma/es de IDs de usu<rio do banco de dados


7lm de ver as informa 1es de cada um dos logins definidos para o SQL Server+ tambm poss%vel ver as informa 1es dos '-s de usu/rio definidos para cada banco de dados.

136

Apostila Microsoft SQL Server 7.0

=ara isso+ no ;nterprise ,anager+ selecione o banco de dados cu:as informa 1es de '-s de usu/rio voc3 6uer ver+ e4panda-o e cli6ue em 3sers.

#ote 6ue no lado direito da tela aparecem algumas informa 1es sobre os '-s definidos para o banco de dados& 7 coluna #ame mostra o '- de usu/rio 6ue foi adicionado a este banco de dados+ indicando 6uem tem a capacidade de acessar este banco de dados. 7 coluna CLogin #ameC mostra 6ual login est/ associado com os '-s de usu/rio definidos para esse banco de dados. 7 coluna C-atabase 7ccesC indica o tipo de acesso 6ue o '- de usu/rio tem a esse banco de dados. Selecione+ do lado direito da tela+ o login cu:as informa 1es voc3 dese:a ver+ cli6ue no mesmo com o boto direito e selecione =roperties. ;ssa tela mostra todos os papis de banco de dados definidos para este banco de dados Atodos 6ue aparecem listadosB e tambm a 6uais deles este usu/rio espec%fico pertence Aos 6ue t3m a cai4a de verifica o ao seu lado marcadaB. =ara sair desta :anela+ cli6ue em Cancel.

137

Apostila Microsoft SQL Server 7.0

Visuali8ando in+orma/es de 'a'Wis de bancos de dados1


;mbora voc3 possa ver informa 1es sobre papis de bancos de dados com a tcnica descrita acima+ tambm pode ver-se atravs da perspectiva dos papis de bancos de dados+ ao invs do usu/rio de banco de dados. =ara isso+ no ;nterprise ,anager+ e4panda o banco de dados de cu:os papis voc3 6uer obter informa 1es+ cli6ue em &oles.

#a coluna C#ameCvoc3 v3 uma lista de todos os papis para esse banco de dados particular. #a coluna C0ole $LpeC v3-se as palavras CStandardC ou C7pplicationC. Standard significa 6ue um papel normal de banco de dados+ eb6uanto 7pplication significa 6ue esse papel um papel de aplica o de banco de dados. Caso voc3 6ueira obter mais informa 1es sobre 6ual6uer dos papis+ cli6ue no mesmo com o boto direito e selecione 7ro'erties.

138

Apostila Microsoft SQL Server 7.0

;ssa cai4a de di/logo lista os usu/rios do banco de dados 6ue fa2em parte deste papel em particular. =ara sair dessa cai4a de di/logo+ cli6ue em Cancel. N bem prov/vel 6ue voc3 ache mais f/cil ver estas informa 1es atravs das informa 1es de login+ como descrito anteriormente.

Visuali8ando in+orma/es de 'a'Wis de servidor


,uitas ve2es+ voc3 ir/ 6uerer ver os v/rios papis de servidor de seu SQL Server e determinar 6uais logins pertencem a 6uais papis de servidor.

#o ;nterprise ,anager+ selecione o servidor cu:os papis voc3 6uer gerenciar+ e e4panda-o. ;4panda a pasta SecuritA e selecione Server &oles. 139

Apostila Microsoft SQL Server 7.0

O nome completo do papel de servidor mostrado na coluna CTull #ameC+ e o seu nome curto em C#ameC. 7 coluna C-escriptionC descreve o 6ue o papel de servidor pode fa2er. =ara descobrir 6uais logins pertencem a cada um dos papis de servidor+ cli6ue com o boto direito no papel de servidor+ e selecione =orperties. 7parece a cai4a de di/logo de C=ropriedades do papel de servidorC.

;ssa cai4a de di/logo tem duas guias& a guia C8eneralC+ 6ue te di2 6uais logins foram atribu%dos a esse papel particular. 7 guia C=ermissionsC te mostra as v/rias permiss1es 6ue esse papel recebeu. Cli6ue em Cancel para sair dessa :anela. >ota@ ;sse o )nico local onde se pode ver informa 1es sobre papis de servidor.

140

Apostila Microsoft SQL Server 7.0

7ermiss/es
7t agora+ :/ vimos como criar e gerenciar logins 6ue so usados para controlar o acesso ao SQL Server. Yimos tambm como criar e gerenciar '-s de usu/rios de bancos de dados+ os 6uais so usados para controlar o acesso a bancos de dados individualmente. ,as+ mesmo 6ue um usu/rio tenha um login e um 'de usu/rio v/lido+ ele no pode acessar 6ual6uer dado em um banco de dados sem 6ue lhe tenham sido dadas permiss1es e4pl%citas para acessar os ob:etos arma2enados no banco de dados. *ermissBes so usadas no SQL Server para especificar 6uais usu/rios podem ter acesso a 6uais ob:etos de bancos de dados+ e o 6ue eles podem fa2er com tais ob:etos. Se um usu/rio no receber e4plicitamente a permisso para acessar um ob:eto+ ele no ter/ acesso ao mesmo. =ermiss1es podem ser atribu%das a usu8rios Acontas do #$ Server ou do SQL ServerB+ grupos Agrupos globais do #$ ServerB+ e papOis Apapis predefinidos de servidor+ de banco de dados e papis personali2ados de bancos de dadosB. N mais f/cil atribuir permiss1es a grupos e papis do 6ue a usu/rios individuais Aa 6uantidade de trabalho bra al e4igida menorB. O SQL Server apresenta tr3s n%veis de permiss1es& *ermissBes para comandos SQL& habilitam usu/rios a e4ecutar comandos SQL espec%ficos 6ue so usados para criar ob:etos de bancos de dados+ fa2er bac9up de bancos de dados e logs de transa o. *ermissBes de o6<etos& determinam o 6ue um usu/rio pode fa2er a um ob:eto pree4istente. *ermissBes impl7citas& so permiss1es 6ue s5 podem ser e4ecutadas por membros de papis predefinidos de servidor e de banco de dados+ ou pelos propriet/rios do banco de dados. 7tribuem-se permiss1es aos usu/rios baseado no 6ue eles precisam de fa2er com os dados arma2enados no SQL Server. 7lguns usu/rios podem precisar apenas de visuali2ar dados+ outros podem precisar de consultar dados e gerar relat5rios+ outros podem precisar de alterar dados+ etc. .ma das principais responsabilidades do -F7 determinar 6uais usu/rios precisam de acessar 6uais ob:etos+ e 6uais permiss1es eles precisam. =ermiss1es atribu%das em um banco de dados so independentes de permiss1es atribu%das a outro banco de dados. Se um usu/rio precisar de acessar tabelas em dois bancos de dados+ o usu/rio deve ter '-s de usu/rio nos dois bancos de dados+ e as permiss1es necess/rias atribu%das em cada banco de dados+ para acesso aos ob:etos 6ue ele precisa acessar.

7ermiss/es 'ara comandos SQL


=ermiss1es para comandos SQL so dadas a usu/rios 6ue precisam de criar um banco de dados ou ob:etos de bancos de dados+ ou 6ue precisam fa2er bac9up de bancos de dados e seus logs de transa 1es. Quando voc3 atribui permiss1es para comandos SQL voc3 na verdade est/ dando ]6uele usu/rio espec%fico a capacidade de e4ecutar comandos SQL espec%ficos. ;sses comandos so os seguintes& C0;7$; -7$7F7S;& capacita o usu/rio a criar bancos de dados em um servidor SQL Server espec%fico. C0;7$; -;T7.L$& o usu/rio pode criar um valor padro 6ue automaticamente inserido em uma coluna de alguma tabela sempre 6ue a coluna for dei4ada em branco 6uando um novo valor acrescentado a ela. C0;7$; =0OC;-.0;& permite a cria o de procedimentos arma2enados. C0;7$; 0.L;& permite a cria o de uma regra 6ue utili2ada para validar dados 6ue so informados em uma coluna sempre 6ue uma nova linha adicionada ] tabela. C0;7$; $7FL;& permite a cria o de uma nova tabela dentro de um banco de dados C0;7$; Y';!& permite a cria o de tabelas virtuais+ 6ue so usadas para mostrar um subcon:unto de uma tabela+ ou para :untar duas ou mais tabelas em uma )nica tabela virtual. -.,= -7$7F7S;& permite fa2er bac9up de um banco de dados. -.,= $07#S7C$'O#& permite fa2er bac9up do log de transa 1es de um banco de dados. 141

Apostila Microsoft SQL Server 7.0

7s tarefas descritas acima podem ser reali2adas diretamente atravs de comandos SQL+ ou usando o ;nterprise ,anager. Yoc3 pode atribuir a um usu/rio uma )nica permisso por ve2+ todas elas+ ou um con:unto das permiss1es de comando dispon%veis. #a realidade+ raramente sero usadas as permiss1es para comandos SQL+ pois o SQL Server :/ inclui papis 6ue cumprem as mesmas fun 1es 6ue a atribui o dessas permiss1es. =or e4emplo+ o papel predefinido de servidor SLsadmin consegue real2iar 6ual6uer tarefa 6ue possa ter sido atribu%da a um usu/rio atravs de permiss1es para comandos SQL. 7ssim como o papel predefinido de banco de dados dbDbac9upoperator pode fa2er os bac9ups de um banco de dados da mesma maneira 6ue 6uem recebeu a permisso -.,= -7$7F7S;. O mais pr/tico atribuir os usu/rios a papis de servidor ou de banco de dados 6ue lhe permitam fa2er as tarefas 6ue forem necess/rias.

7ermiss/es de ob:etos
O tipo mais comum de permisso atribu%do a usu/rios+ grupos e papis a permisso de ob:etos. ;ssas permiss1es determinam 6uem pode acessar um ob:eto pree4istente e o 6ue esse usu/rio pode fa2er com tal ob:eto. Quando voc3 atribui a um usu/rio uma permisso de ob:eto+ voc3 na verdade est/ dando a tal usu/rio a capacidade de e4ecutar certos comandos SQL sobre ob:etos em um banco de dados. ;ssas permiss1es so as seguintes& -;L;$;& permite e4cluir uma tabela ou viso em um banco de dados. ;<;C.$;& premite a e4ecu o de um procedimento arma2enado. '#S;0$& permite adicionar-se uma nova linha em uma tabela+ ou em uma tabela atravs de uma viso. 0;T;0;#C;S& A-0'B permite ligar duas tabelas usando uma coluna comum. S;L;C$& permite pes6uisar e visuali2ar dados de uma viso+ tabela ou coluna. .=-7$;& permite modificar dados em uma tabela+ coluna de uma tabela+ ou em uma tabela atravs de uma viso. 7s tarefas relacionadas a ob:etos citadas acima podem ser e4ecutadas com o ;nterprise ,anager+ ou pelo uso de comandos SQL+ ou indiretamente atravs do uso de 6ual6uer aplica o Cfront-endC de cliente 6ue use comandos SQL para acessar dados do SQL Server em um servidor. 'ndependente de como um usu/rio acessa ob:etos em um banco de dados+ cada usu/rio deve receber e4plicitamente permiss1es+ em cada ob:eto+ para reali2ar o acesso.

7ermiss/es im'l6citas
.ma permisso impl%cita uma permisso 6ue um usu/rio obtem apenas pelo fato de pertencer a um papel predefinido de banco de dados ou de servidor+ ou por ser o propriet/rio de um ob:eto de banco de dados. =ermiss1es impl%citas no podem ser atribu%das a usu/rios. 7o invs disso+ um usu/rio 6ue precise de uma permisso impl%cita deve ser adicionado a um papel predefinido 6ue :/ tenha tal permisso. =ermiss1es impl%citas podem assim ser atribu%das a usu/rios+ papis personali2ados ou grupos+ com a simples atribui o dos mesmos a um papel predefinido de banco de dados ou de servidor. 7s permiss1es impl%citas tambm podem ser atribu%das a usu/rios+ grupos ou papis personali2ados definindo 6uais6uer destes como o propriet/rio de um ob:eto de banco de dados espec%fico. Os usu/rios+ grupos ou papis personali2ados podem ser atribu%dos a 6ual6uer um dos 7a'Wis 'rede+inidos de Servidor ou 7a'Wis 'rede+inidos de Banco de Dados+ recebendo as permiss1es 6ue tal papel tenha. Arelembre 6uais so os =apis predefinidos de Servidor e =apis predefinidos de Fanco de -adosB 7lm de receberem permiss1es atravs da atribui o aos papis acima+ tambm podemos fa2er usu/rios tornarem-se propriet/rios de algum ob:eto. Como funciona issoa Quando um usu/rio com a permisso de comando ade6uada cria um novo ob:eto no banco de dados+ tal como uma tabela+ ele se torna o propriet8rio do o6<eto de 6anco de dados (-atabase ob:ect o"ner* A-FOOB da6uele ob:eto. =ropriet/rios de ob:etos de banco de addos t3m permiss1es impl%citas em todos os ob:etos 142

Apostila Microsoft SQL Server 7.0

6ue lhes perten am+ o 6ue os d/ a capacidade de e4ecutar 6ual6uer atividade na6uele ob:eto+ tal como S;L;C$+ '#S;0$+ .=-7$;+ -;L;$;+ entre outros. ;les t3m controle completo dos ob:etos 6ue criam. Como d/ para perceber+ permitir 6ue 6ual6uer um se:a um -FOO no uma boa idia. #ormalmente+ as )nicas pessoas 6ue devem criar ob:etos de bancos de dados so -F7s ou desenvolvedores SQL+ no usu/rios comuns.

7recedCncia de 'ermiss/es
Cinco n%veis de permiss1es podme ser atribu%das a um usu/rio+ conforme segue& =ermiss1es individuais =ermiss1es de grupos globais do #$ Server =ermiss1es de papis predefinidos de servidor =ermiss1es de papis predefinidos de bancos de dados =ermiss1es de papis personali2ados de bancos de dados. 7s permiss1es podem ser dos tipos& impl%cita+ de comandos ou de ob:etos. O 6ue ocorre se um usu/rio receber permiss1es diferentes atravs de v/rias permiss1es individuais+ v/rios grupos ou papis de 6ue o mesmo fa a partea 7 priori+ as permiss1es somam-se+ ou se:a& as permiss1es 6ue um usu/rio tenha como membro de um grupo somam-se ]s permiss1es 6ue ele tiver como usu/rio individual e assim por diante. ,as h/ uma e4ce o` 7 permisso Cnegar acessoC (denL access* sobrep1e-se a 6ual6uer outra permisso para o ob:eto em 6uesto. Quer di2er 6ue se um usu/rio tiver obtido permisso para visuali2ar dados de uma tabela+ atravs da permisso de comando S;L;C$ para a tabela+ e o mesmo usu/rio fi2er parte de um grupo global 6ue tem a permisso de Cacesso negadoC ] tabela em 6uesto+ sua permisso efetiva ser/ a de Cacesso negadoC+ ou se:a+ no lhe ser/ permitido acessar tal banco de dados. 7pesar de termos e4emplificado a6ui citando uma tabela+ essa regra v/lida para 6ual6uer ob:eto de banco de dados.

Visuali8ando in+orma/es de 'ermiss/es


7ntes 6ue voc3 aprenda a conceder e revogar permiss1es para usu/rios+ grupos ou papis+ importante 6ue voc3 saiba como visuali2ar permiss1es tanto de ob:etos como de comandos. 'sso no apenas te a:udar/ a

143

Apostila Microsoft SQL Server 7.0

trabalhar com permiss1es+ mas tambm te mostrar/ como e4ecutar uma tarefa 6ue voc3 estar/ reali2ando regularmente como um -F7. Yamos ver como visuali2ar as permiss1es atuais de ob:eto para todos os usu/rios+ grupos+ e papis em um )nico banco de dados utili2ando o ;nterprise ,anager. Lembre-se 6ue permiss1es so gerenciadas para cada banco de addos+ e 6ue voc3 deve reali2ar estes passos em cad banco de dados no 6ual voc3 6ueira ver as permiss1es. Visuali8ando 'ermiss/es 'ara comandos SQL #o ;nterprise ,anager+ usando uma conta com privilgios de s&sadmin+ e4panda o banco de dados cu:as permiss1es de comando voc3 6uer visuali2ar. Cli6ue no mesmo com o boto direito e em 7ro'erties. 7parece a cai4a de di/logo de =ropriedades do banco de dados& 7gora+ cli6ue na guia 7ermissions. N mostrada a tela de permiss1es para comandos SQL

#a primeira coluna desta tela+ embai4o do t%tulo 3ser)&ole+ esto listados toos os '-s de usu/rios de bancos de dados para esse banco de dados. Lembre-se 6ue essa coluna pode e4ibir 6uais6uer grupos+ papis ou usu/rios. #as outras colunas esto as v/rias permiss1es para comandos SQL 6ue podem ser atribu%das. #ote 6ue esta tela no e4ibe todas as permiss1es de uma ve2; voc3 deve percorr3-la para a direita para poder v3las todas. -epois de ver todas as permiss1es 6ue podem ser atribu%das+ saia desta tela clicando em %ancel. 'sso te leva de volta ] tela do ;nterprise ,anager. Visuali8ando 'ermiss/es de ob:etos 7 visuali2a o de permiss1es de ob:etos m pouco mais dif%cil do 6ue a visuali2a o de permiss1es para comandos SQL. Yoc3 pode v3-las da perspectiva de usu/rios+ grupos+ ou papis+ ou ento da perspectiva dos pr5prios ob:etos. 7nalisaremos a6ui as duas maneiras. Sob a 'ers'ectiva do usu<rio; gru'o ou 'a'el; as 'ermiss/es so visuali8adas desta +orma@ R. #o ;nterprise ,anager+ e4panda o banco de dados cu:as permiss1es de ob:etos voc3 6uer visuali2ar. P. O pr54imo passo depende se voc3 6uer ver permiss1es de ob:etos para grupos e usu/rios+ ou para papis personali2ados. 144

Caso voc3 6ueira ver as permiss1es de ob:etos para grupos e usu/rios+ selecione 3sers no banco de dados em 6uesto; todos os usu/rios e grupos aparecem do lado direito da tela. =ara ver informa 1es de permiss1es de ob:etos atribu%das a papis personali2ados+ selecione &oles no banco de dados em 6uesto; todos os papis+ predefinidos e personali2ados so mostrados no lado direito da tela. O. 7gora+ no lado direito da tela+ cli6ue com o boto direito em um usu/rio+ grupo ou papel personali2ado+ cu:as permiss1es de ob:etos voc3 6uer visuali2ar+e ento selecione =roperties. 7parece ento a :anela de propriedades do usu/rio ou do papel Adependendo do 6ue voc3 selecionou no passo PB.

Apostila Microsoft SQL Server 7.0

Q. Cli6ue no boto =ermissions para ver as permiss1es a n%vel de ob:eto 6ue esse usu/rio Aou papelB tem. Ye:a 6ue h/ dois bot1es no topo da tela. Quando o primeiro (List all ob:ects* est/ selecionado+ todos os ob:etos pertencentes ao banco de dados so e4ibidos na tela. Se a segunda op o (List onlL ob:ects "ith permissions for this user* for selecionada+ apenas a6ueles ob:etos para os 6uais o usu/rio tm permisso so listados. #a primeira coluna h/ um %cone 6ue representa o ob:eto de banco de dados. 7 segunda coluna+ lhe mostra o nome do ob:eto. 7 coluna O"ner mostra 6uem o propriet/rio do ob:eto. 7s outras colunas mostram as permiss1es de ob:etos dispon%veis. Se alguma coluna estiver marcada Acom sua cai4a de verifica o ativadaB+ isso indica 6ue esse usu/rio possui a6uela permisso para o ob:eto em 6uesto. =erceba 6ue nem todos os ob:etos t3m todas as permiss1es de ob:eto dispon%veis. =or e4emplo+ procedimentos arma2enados t3m apenas a permisso de ob:eto 4(ecute. ?. =ara terminar de visuali2ar as permiss1es de ob:eto+ saia da tela clicando em %ancel. Cli6ue de novo em %ancel e voc3 estar/ de volta ao ;nterprise ,anager. Sob a 'ers'ectiva dos ob:etos individuais de banco de dados; visuali8am-se assim as 'ermiss/es@ 145

Apostila Microsoft SQL Server 7.0

R. #o ;nterprise ,anager+ e4panda o banco de dados cu:as permiss1es de ob:eto voc3 6uer verificar. 7parecem todos os tipos de ob:etos de bancos de dados. P. 7gora voc3 deve decidir 6uais permiss1es de ob:etos voc3 6uer visuali2ar. Yoc3 pode escolher& tabelas (tables*+ vis1es (vie"s*+ procedimentos arma2enados (stored procedures*+ regras (rules*+ defaults (defaults*+ e tipos de dados definidos pelo usu/rio (user defined data tLpes*. Cli6ue no tipo de ob:eto pcu:as permiss1es voc3 6uer visuali2ar. 7parecem no lado direito da tela todos os ob:etos desse tipo.

O. Cli6ue com o boto direito em um dos ob:etos+ e em 7ro'erties. 7parece a cai4a de di/logo de propriedades do ob:eto 6ue voc3 selecionou Ano caso uma tabelaB Q. =ara e4ibir as permiss1es para esse ob:eto+ cli6ue no boto =ermissions. 7parece a tela de permiss1es do ob:eto+ como abai4o& #ote as duas op 1es na parte superior da tela. =or padro+ a primeira (List all users / user-defined -F roles / public* est/ selecionada. 7ssim+ todos usu/rios+ grupos e papis para esse banco de dados so e4ibidos na tela. Se a segunda op o (List onlL users / user-defined -F roles / public permissions on this ob:ect*+ apenas os usu/rios+ grupos ou papis 6ue tenham permiss1es definidas para esse ob:eto sero e4ibidos. 7 primeira coluna mostra um %cone. .ma )nica cabe a indica um usu/rio ou um grupo. -uas cabe as indicam um papel. $odos os usu/rios+ grupos ou papis para esse banco de dados esto embai4o de C.ser/-F 0oleC. 7s colunas restantes indicam as permiss1es de ob:eto dispon%veis para este ob:eto. Se a cai4a de verifica o estiver selecionada AativaB+ indica 6ue um usu/rio+ grupo ou papel obteve a permisso de ob:eto associada. Ye:a 6ue nem todos os ob:etos t3m todas as permiss1es de ob:eto. ?. -epois de terminar de visuali2ar as permiss1es de ob:eto+ voc3 pode sair clicando em %ancel duas ve2es+ primeiro para a tela de permiss1es+ e depois para a cai4a de di/logo de propriedades. ;nto voc3 volta para a tela principal do ;nterprise ,anager. 146

Apostila Microsoft SQL Server 7.0

%oncedendo e revogando 'ermiss/es 'ara comandos SQL 'elo 4nter'rise Manager


7 concesso e revoga o de permiss1es usa as mesmas telas 6ue acabamos de ver. ,as agora+ atribu%remos e revogaremos permiss1es de grupos+ usu/rios+ e papis. Lembre-se 6ue nenhum usu/rio tem 6ual6uer permisso para acessar 6ual6uer ob:eto de dados at 6ue voc3 e4plicitamente atribua a ele tais permiss1es. Quando voc3 concede uma permisso de comandos para um usu/rio+ voc3 est/ lhe dando a permisso de e4ecutar uma tarefa espec%fica+ tal como criar ob:etos de banco de dados ou fa2er bac9up de um banco de dados ou de um log de transa 1es. ;sse usu/rio permanece com a permisso 6ue voc3 lhe deu at 6ue e;a se:a e4plicitamente removida. -epois 6ue uma permisso for revogada+ o usu/rio no pode mais reali2ar a mesma tarefa+ at 6ue lhe tenha sido concedida a mesma permisso de comando novamente. =ara conceder ou revogar uma permisso utili2ando o ;nterprise ,anager+ os passos so os seguintes& R. #o ;nterprise ,anager+ cli6ue com o boto direito no banco de dados cu:as permiss1es voc3 6uer

alterar+ e em 7ro'erties. 7parece a cai4a de di/logo abai4o&

2. ;ssa a mesma tela vista anteriormente Aem visuali2ando permiss1es de bancos de dadosB. #a
primeira coluna desta tela+ abai4o de 3ser)&ole esto listados todos os '-s de usu/rio de banco de dados para este banco de dados. Lembre-se 6ue esta coluna pode listar 6ual6uer usu/ri+ grupo ou papel. #as outras colunas esto as v/rias permiss1es para comandos SQL 6ue podem ser atribu%das. #ote 6ue na tela no cabem todas as permiss1es e4istentes; para v3-las+ voc3 tem 6ue rolar hori2ontalmente para a direita. O. =ara atribuir 6ual6uer das sete permiss1es para comandos SQL para 6ual6uer usu/rio+ papel ou grupo e4ibidos na primeira coluna+ cli6ue na coluna da permisso 6ue voc3 6uer atribuir+ na linha do usu/rio 6ue deve receber tal permisso. 7 permisso no concedida at 6ue voc3 cli6ue em 7pplL ou O9. Q. =ara revogar uma permisso de comando 6ue tenha sido atribu%da anteriormente+ cli6ue na cai4a de verifica o 6ue representa a permisso de comando 6ue voc3 6uer revogar do usu/rio+ grupo+ ou papel. Quando voc3 clicar na cai4a de verifica o+ ela muda paara um < vermelho Acomo mostrado 147

Apostila Microsoft SQL Server 7.0

abai4oB+ indicando 6ue a permisso ser/ revogada. 7 permisso s5 de fato revogada 6uando voc3 clica em O9 ou 7pplL. ?. -epois de revogar e conceder todas as permiss1es para comandos SQL 6ue voc3 6ueira+ saia dessa tela clicando em O9. ;nto voc3 volta para o ;nterprise ,anager.

%oncedendo e revogando 'ermiss/es de ob:etos 'elo 4nter'rise Manager


Quando mostramos como visuali2ar permiss1es de ob:etos para usu/rios+ grupos ou papis+ vimos 6ue h/ dois modos de visuali2/-las. =ode-se ver as permiss1es de ob:eto sob a perspectiva do usu/rio+ grupo ou papel+ ou a pela perspectiva do ob:eto de banco de dados em si. 'sso tambm se verifica para a concesso e revoga o de permiss1es de ob:eto. 76ui+ demonstraremos como conceder/revogar permiss1es de ob:etos pela perspectiva do usu/rio+ grupo ou papel+ pois essa a maneira mais pr/tica e conveniente. #o se es6ue a de 6ue um usu/rio no tem permisso para acessar 6ual6uer ob:eto de banco de dados at 6ue tal permisso lhe tenha sido atribu%da Quando voc3 concede uma permisso de ob:eto a um usu/rio+ voc3 est/ lhe dando a permisso de e4ecutar uma tarefa em um ob:eto pree4istente+ tal como S;L;C$+ '#S;0$+ .=-7$;+ ou -;L;$; sobre o ob:eto. ;sse usu/rio mantm a permisso de ob:eto at 6ue a mesma tenha sido e4plicitamente revogada. Caso voc3 6ueira remover/conceder permiss1es pela perspectiva do ob:eto de banco de dados+ voc3 pode+ usando praticamente os mesmos procedimentos 6ue sero descritos a seguir. R. ;4panda o banco de dados cu:as permiss1es de ob:eto voc3 6uer alterar. Se voc3 for conceder/revogar permiss1es para usu/rios ou grupos+ cli6ue em 3sers. Caso voc3 6ueira alterar permiss1es para papis+ cli6ue em &oles.

148

Apostila Microsoft SQL Server 7.0

P. Cli6ue com o boto direito no usu/rio+ grupo ou papel cu:as permiss1es voc3 6uer alterar+ e em 7ro'erties. 7parecer/ uma cai4a de di/logo com propriedades do usu/rio ou grupo+ ou do papel. O. Cli6ue em 7ermissions. 7parece a tela de permiss1es para o usu/rio+ grupo ou papel 6ue voc3

houver selecionado. 7 primeira coluna tem um %cone 6ue representa o tipo do ob:eto de banco de dados+ seguido do nome do ob:eto de banco de dados. 7 coluna O"ner mostra 6uem o propriet/rio do ob:eto. 7s outras colunas mostram as permiss1es de ob:eto e4istentes. .ma marca o em alguma das cai4as de verifica o indica 6ue o usu/rio em 6uesto tem permisso para esse ob:eto. Q. =ara conceder alguma das seis permiss1es de ob:etos para o usu/rio+ grupo ou papel em 6uesto+ mar6ue a cai4a de verifica o apropriada na coluna referente ao ob:eto. 7 cai4a de verifica o ficar/ marcada. 7 permisso s5 de fato concedida 6uando voc3 clica em O9 ou 7pplL. ?. =ara revogar uma permisso 6ue :/ tenha sido atribu%da+ cli6ue na cai4a de verifica o 6ue representa a permisso de ob:eto 6ue voc3 6uer remover de um usu/rio+ grupo ou papel. 7o clicar na mesma+ ela muda para um < vermelho+ indicando 6ue a permisso ser/ revogada. 7 permisso s5 de fato revogada ao se clicar em O9 ou 7pplL. S. -epois de teminar de definir as permiss1es de ob:etos+ voc3 pode sair da tela clicando em O9. Yoc3 deve ento clicar em O9 de novo para retornar ao ;nterprise ,anager.

%oncedendo e revogando 'ermiss/es 'ara comandos SQL; usando comandos SQL


=ermiss1es tambm podem ser concedidas ou revogadas atravs de comandos SQL. =ara isso+ usa-se os comandos 807#$ e 0;YOI;. 807#$ concede permiss1es+ en6uanto 0;YOI; as revoga. 7 sinta4e do 807#$ &
807#$ j7LL \ comando (+..n*l $O contaDseguran a (+..n*

; a do 0;YOI; &
0;YOI; j7LL \ comando(+...n*l T0O, contaDseguran a (+...n*

149

Apostila Microsoft SQL Server 7.0

Onde& comando o comando SQL para o 6ual a permisso est/ sendo concedida/removida. Os comandos podem ser& C0;7$; -7$7F7S; C0;7$; -;T7.L$ C0;7$; =0OC;-.0; C0;7$; 0.L; C0;7$; $7FL; C0;7$; Y';! F7CI.= -7$7F7S; F7CI.= LO8 ALL indica 6ue todas as permiss1es daAsB contaAsB de seguran a em 6uesto sero concedidas/revogadas. contaAsegurana a conta de seguran a no banco de dados atual para a 6ual as permiss1es esto sendo adicionadas ou removidas. =ode ser um& .su/rio do SQL Server ou do #$ 8rupo do #$ =apel do SQL Server n indica 6ue pode ser informado mais de um nome de conta de seguran a para se conceder/revogar permiss1es+ assim como pode-se informar mais de um comando para tr permisso concedida/revogada. Fasta separ/-los por v%rgula. Caso 6uisssemos por e4emplo+ permitir 6ue um usu/rio pudesse criar uma tabela+ digitar%amos
807#$ create table $O usuario

; para revogar essa permisso&


0;YOI; create table T0O, usuario

=ara revogar todas as permiss1es de um usu/rio+ digitar%amos este comando&


0;YOI; 7LL T0O, usuario

1E - Bac!u' e &estaurao
Dis'ositivos de Bac!u' Im'lementar Bac!u' &estaurar um Bac!u' $gendar Bac!u's $utom<ticos

Objetivos: - 7prender a gerenciar os dispositivos de bac9up; - 7prender como fa2er bac9ups+ restaurar os dados+ e agendar bac9ups autom/ticos.

%onceitos
.m 6ac/up ou dump do banco de dados a opera o de copiar os dados para um dispositivo de bac9up. =ode ser feito com o ;nterprise ,anager ou com o comando F7CI.=. #o necess/rio parar o SQL Server ou desconectar os usu/rios para fa2er a opera o de bac9up. ;la pode ser feita a 6ual6uer momento. -eve150

Apostila Microsoft SQL Server 7.0

se considerar 6ue a reali2a o do bac9up com usu/rios utili2ando o banco de dados+ causa uma pe6uena 6ueda de performance+ 6ue pode ser percept%vel aos usu/rios. N importante ento escolher horas de menor atividade do servidor Aou ao menos do banco de dados cu:o bac9up est/ sendo feitoB para a reali2a o do bac9up. .ma restaura=o ou "ES,O"E do banco de dados a opera o de tra2er os dados de um meio de bac9up de volta para os bancos de dados.

?i'os de bac!u'
.m bac9up pode ser feito do banco de dados inteiro+ 6ue copia todos os dados+ mais o log de transa 1es Aa tabela s&slogsB. Se esse bac9up for restaurado+ todo o conte)do do banco de dados restaurado e sobrescreve o conte)do atual. ;sse tipo de bac9up pode ser feito com o comando F7CI.= -7$7F7S; ou o ;nterprise ,anager. =ode ser feito um bac9up apenas do log de transa 1es. Como o log de transa 1es contm apenas as modifica 1es feitas aos dados+ se esse bac9up for restaurado+ apenas essas modifica 1es sero aplicadas sobre os dados. ;sse tipo de bac9up pode ser feito com o comando F7CI.= LO8 ou o ;nterprise ,anager. 7p5s um bac9up desse tipo+ o log de transa 1es esva2iado Ae4ceto as transa 1es 6ue ainda esto sendo atuali2adasB. .m bac9up do log de transa 1es leva muito menos tempo para ser feito do 6ue um ba9cup de todo banco de dados. 7ssim+ em um banco de dados 6ue bastante modificadao diariamente+ pode-se fa2er diversos bac9ups di/rios do log de transa 1es. Ou ento algum bac9up diferencial+ como ser/ mostrado a seguir. =ode-se fa2er tambm o 6ue chamado de 6ac/up di+erencial. ;sse tipo de bac9up semelhante ao bac9up do log de transa 1es+ com a diferen a de 6ue s5 far/ bac9up dos valores modificados desde o )ltimo bac9up completo Ade todo o banco de dadosB. Ou se:a+ se uma infroma o foi modificada vinte ve2es desde o )ltimo bac9up+ um bac9up do log de transa 1es teria as PJ modifica 1es feitas nessa informa o+ en6uanto 6ue um bac9up diferencial teria apenas o )ltimo valor arma2enado. 7ssim+ esse tipo de bac9up gera ar6uivos menores+ apesar de demorar um pouco mais de tempo para ser reali2ado 6ue o bac9up do log de transa 1es. ,as+ por outro lado+ e4ige bem menos tempo para restaura o. =or )ltimo+ e4iste a possibilidade de se fa2er bac9up de ar6uivos individuais do banco de dados. Lembre-se 6ue um banco de dados pode ser formado por v/rios ar6uivos. 7ssim+ para um banco de dados muito grande+ a ponto de no poder ser Cbac9upeadoC em uma )nica noite+ por e4emplo+ podem ser feitos bac9ups dos ar6uivos 6ue o formam+ um por ve2. >ota@ os comandos -.,= -7$7F7S; e -.,= $07#S7C$'O#+ e4istentes em vers1es do SQL Server anteriores ] G.J+ ainda e4istem+ mas apenas por motivos de compatibilidade. 0ecomenda-se utili2ar F7CI.= -7$7F7S;+ ao invs de -.,= -7$7F7S;+ e F7CI.= LO8 ao invs de -.,= $0#S7C$'O#+ :/ 6ue -.,= no ser/ mais aceito em futuras vers1es do SQL Server.

Dis'ositivos de Bac!u'
.m dispositivo de bac9up nada mais 6ue um ponteiro para o local onde o bac9up do seu banco de dados ser/ arma2enado. =ode-se criar um dispositivo de bac9up a 6ual6uer instante+ no ;nterprise ,anager+ ou cri/-lo apenas 6uando se for de fato fa2er um bac9up do banco de dados. .m dispositivo de ba9cup opde especificar o nome de um ar6uivo em disco r%gido 6ue ser/ escrito 6uando o ba9cup for e4ecutado+ ou pode especificar o nome de uma unidade de fita. 7 cria o de um dispositivo de bac9up no cria um ar6uivo at 6ue se:a e4ecutado o bac9up..

Gerenciando dis'ositivos de bac!u'


=ara criar um dispositivo de bac9up+ fa a o seguinte& 151

#o ;nterprise ,anager+ selecione o servidor do 6ual se 6uer fa2er bac9up de algum banco de dados+ abra a pasta Management e cli6ue com o boto direito em Fac9up. Selecione >e Bac!u' Device. Cada dispositivo de bac9up tem um nome l5gico e um nome f%sico. ;m #ame+ informe um CapelidoC Anome l5gicoB 6ue ser/ utili2ado pelo comando de bac9up 6uando da reali2a o de um bac9up do banco de dados. #o nosso caso+ informemos Fac9upR. O campo ?a'e Drive >ame ou File >ame a locali2a o f%sica do ar6uivo em 6ue o dispositivo de bac9up ir/ escrever. =ara fitas+ informe o nome da unidade de fita+ 6ue algo como EE.E$7=;J. =ara ar6uivos em disco+ informe o nome e caminho do ar6uivo de disco+ algo como EEServidorEbac9upsESegundaEmaster.ba9 Cli6ue em O9 para terminar. 7parece agora o nome deste dispositivo de bac9up do lado direito da tela+ 6uando se seleciona Fac9ups do lado es6uerdo do ;nterprise ,anager. O ;nterprise ,anager cria o nome f%sico do ar6uivo em -:;MSSQLEF7CI.=+ como default+ mas pode ser mudado. Se voc3 clica em C$ape bac9up deviceC+ voc3 deve escolher um dos dispositivos de fita suportados pelo !indo"s #$+ como nome f%sico. #o caso+ usaremos C-is9 bac9up deviceC. Cli6ue em O9. #ote 6ue o ar6uivo+ no caso c:;mss:lEbac9upEFac9upR.dat+ no criado imediatamente+ s5 da primeira ve2 6ue um bac9up for feito. ;le tambm e4pande automaticamente+ dependendo dos dados colocados nele+ por isso voc3 no define o seu tamanho. >ota@ O suporte a fitas do SQL Server depende do suporte fornecido pelo !indo"s #$ Aver =ainel de Controle+ %cone C-ispositivos de fitaC ($ape -evices*B.

Apostila Microsoft SQL Server 7.0

Im'lementando um bac!u'
=ara fa2er um bac9up completo do banco de dados ;4emplo+ fa a o seguinte&

152

Apostila Microsoft SQL Server 7.0

R. no ;nterprise ,anager+ locali2e esse banco de dados sob C-atabasesC e cli6ue nele com o boto direito. Selecione $ll ?as!s+ e Bac!u' Database. 7parece a :anela abai4o& P. 'nforme um nome para o bac9up Aou dei4e o nome padro+ 6ue nomeA6ancoAdeA dados 6ac/upB+e caso 6ueira+ uma descri o (-escription* para o bac9up. Yoc3 pode escolher entre 6uatro op 1es de bac9up& bac9up do banco de dados inteiro A-atabase - completeB& a op o selecionada por padro. bac9up diferencial A-atabase - differentialB& um bac9up diferencial fa2 uma c5pia apenas das mudan as ocorridas no banco de dados desde o )ltimo bac9up completo. apenas do log A$ransaction LogB& uma das ra21es para se fa2er bac9up do log de transa 1es evitar 6ue o mesmo fi6ue cheio. Se voc3 o configurou para crescer automaticamente+ no se preocupar/ com isso+ a no ser 6ue o disco onde est/ arma2enado o log de transa 1es este:a ficando cheio. ;sta op o desabilitada se ?runcate Log on %5ec!'oint estiver ativa para o banco de dados em 6uesto. de algum ar6uivo ou grupo de ar6uivos ATile and filegroupB& esta op o tambm fica desabilitada se ?runcate log on c5ec!'oint estiver ativada para esse banco de dados. .m bac9up de grupo de ar6uivos Afilegroup bac9upB copia apenas alguns dos ar6uivos f%sicos 6ue formam o banco de dados. .sa-se esta op o 6uando no se disp1e de tempo para fa2er bac9up de todo o banco de dados. O. Cli6ue em 7dd para para selecionar um destino Aem fita ou em discoB para o bac9up. Q. -igite o nome do ar6uivo destino do bac9up+ ou selecione um dispositivo de bac9up e4istente. #o nosso caso+ selecionaremos o dispositivo bac9upR+ criado anteriormente. Cli6ue em O9. ?. Yoc3 pode optar por uma das a 1es a seguir Adei4e a op o default - 7ppend to mediaB& 153

$''end to media& com esta op o selecionada+ este bac9up do banco de dados ser/ adicionado a outros bac9ups :/ e4istentes na fita+ dispositivo ou ar6uivo selecionado. .ver rite e(isting media far/ com 6ue este bac9up subsitutua+ sobrescreva+ o conte)do da fita ou ar6uivo para onde ele est/ sendo gravado. S. Cli6ue em O9 para inciar o bac9up. 7o clicar na guia Options+ voc3 pode optar por fa2er uma verifica o completa do bac9up ap5s sua reali2a o (YerifL bac9up upon completion*. #o caso de fa2er bac9up para fita+ voc3 tambm pode definir uma data de e4pira o para o bac9up. =ara conferir o conte)do de KFac9upRK+ selecione Fac9ups+ selecione-o na lista de dispositivos Ado lado direito da :nelaB+ d3 um duplo cli6ue no mesmo e cli6ue no boto CYie" ContentsC. Yoc3 ver/ 6ual o conte)do atual+ 6ue inclui o banco de dados ;4emplo.

Apostila Microsoft SQL Server 7.0

7% voc3 v3 os bac9ups arma2enados no ar6uivo ou dispositivo+ com detalhes sobre o mesmo. Yoc3 v3 a%+ o nome do bac9up (#ame*+ de 6ual servidor foi feito (Server*+ de 6ual banco de dados (-atabase*+ 6ue tipo de bac9up ($Lpe*. Se voc3 rolar o conte)do da :anela hori2ontalmente+ ver/ ainda a ver/ a data (-ate* em 6ue foi feito+ o tamanho (Si2e*+ a data de e4pira o (;4piration* Adispon%vel selecionando bac9up em fitaB+ e alguma descri o (-escription* 6ue voc3 tenha colocado. Cli6ue em %lose para sair dessa tela.

$crescentando um bac!u'
Yoc3 pode acrescentar um bac9up a um dispositivo. Yamos acrescentar o bac9up de e4emploP Aou outro banco de dados 6ual6uer 6ue no se:a o e@emploB a esse dispositivo. =ara isso+ fa a o mesmo processo anterior Aagora com o outro banco de dadosB+ selecionando a op o $''end to media+ e cli6ue em CO9C. #ote 6ue a6ui voc3 tambm pode ver o conte)do de um ar6uivo ou dispositivo+ clicando em Vie %ontents. 7gora d3 um duplo cli6ue em CFac9upRC na lista de bac9ups+ e no boto CYie" ContentsC. Yoc3 ver/ 6ue l/ dentro esto os dois bancos de dados.

Fa8endo bac!u' do log de transa/es


.m bac9up do banco de dados inteiro pode tomar muito tempo. Yoc3 pode fa2er um bac9up do log de transa 1es+ 6ue vai copiar apenas as modifica 1es feitas. #o ;nterprise ,anager+ selecione o banco de dados C;4emploC + cli6ue em $ll ?as!s+ Bac!u' Database. Selecione a op o ?ransaction Log+ escolha o dispositivo Fac9upR+ e selecione $''end to media. Cli6ue em O9. 154

Apostila Microsoft SQL Server 7.0

Yisuali2e a informa o de KFac9upRK com o boto CYie" ContentsC. #ote+ na coluna CFac9up Si2eC+ 6ue o tamanho do log menor do 6ue o banco de dados. 7o fa2er esse tipo de bac9up+ o conte)do do log limpo Ae4ceto as altera 1es ainda pendentes no banco de dadosB. 'sso signifca 6ue voc3 deve manter os bac9ups de log para poder restaurar um banco de dados.

Lim'ando o log de transa/es


Quando o log de transa 1es no limpado fre6gentemente+ seu espa o pode se esgotar. 'sso pode acontecer caso no se:am feitos bac9ups fre6gentes do log. Se o espa o do log se esgotar+ no poss%vel alterar dados no banco de dados. =ara limpar o conte)do do log As5 as transa 1es :/ confirmadas e escritas no logB+ use o comando& F7CI.= LO8 !'$H $0.#C7$;DO#L^ ou+ no ;nterprise ,anager+ cli6ue com o boto direito no banco de dados+ $ll ?as!s+ ?runcate Log. 7parece uma mensagem de confirma o+ avisando 6ue altamente recomend/vel um bac9up do banco de dados completo antes de truncar o log de transa 1es. Cli6ue em O9.

&estaurando um Bac!u'
Yoc3 pode restaurar um bac9up atravs do ;nterprise ,anager.

&estaurando um banco de dados e o log 'elo 4nter'rise Manager


O ;nterprise ,anager te oferece uma cai4a de di/logo 6ue pode ser usada para restaurar um banco de dados. =ara chegar a ela+ selecione o banco de dados 6ue voc3 6uer restauar+ cli6ue no mesmo com o boto direito+ selecione 7ll $as9s \ 0estore -atabase. 7 apar3ncia da parte de bai4o dessa cai4a de di/logo depende da op o de restaura o selecionada na metade superior+ op o 0estore. Caso voc3 selecione -atabase+ ver/ uma figura semelhante ] n)mero R. Se selecionar Tilegroups or Tiles+ ver/s uma figura semelhante ] n)mero P. Caso seleciones Trom -evice+ ver/s algo parecido com a figura n)meroO.

155

Apostila Microsoft SQL Server 7.0

R
7 primeira op o+ C0estore -atabaseC+ 6ue mostra a figura acima+ e4ibe uma lista dos bac9ups a partir dos 6uais voc3 pode pode pode fa2er a restaura o+ baseado em tabelas de hist5rico arma2enadas no SQL Server. =or padro+ o bac9up completo do banco de dados mais recente mostrado primeiro+ seguido pelos bac9ups do log de transa 1es e diferenciais reali2ados depois dele. Yoc3 pode usar a barra de rolagem para selecionar um bac9up completo feito h/ mais tempo. #ote a sutil diferen a entre os %cones de um bac9up completo do banco de dados e do bac9up do log de transa 1es. >ota@ voc3 pode saber 6ue tipo de bac9up est/ representado pelo %cone+ entre outros detalhes+ clicando em =roperties. =ode ser importante+ pois um bac9up de grupo de ar6uivos tem o mesmo %cone 6ue um bac9up completo do banco de dados.

156

Apostila Microsoft SQL Server 7.0

P
7 segunda op o+ C0estore Tilegroups or TilesC+ tambm e4ibe uma lista de bac9ups a partir dos 6uais voc3 pode fa2er a restaura o com base nas tabelas de hist5rico. Munto com uma lista de bac9ups anteriores de grupos de ar6uivos+ voc3 ver/ 6ue bac9ups de ar6uivos completos e de logs de transa 1es. ;les so mostrados pois um grupo de ar6uivos tambm pode ser restaurado a partir de um bac9up completo do banco de dados e do log de transa 1es.

157

Apostila Microsoft SQL Server 7.0

O
7 terceira op o+ C0estore from -eviceC+ utili2ada 6uando o bac9up 6ue voc3 6uer restaurar no est/ listado na tabela de hist5rico Aos bac9ups mostrados pelos %cones citados acimaB. 'sso pode ocorrer se voc3 estiver restaurando um banco de dados copiado de outro servidor SQL Server. >ota@ S5 pelo fato de um bac9up estar listado+ no significa 6ue voc3 se:a capa2 de reali2ar uma restaura o atravs dele. 7s tabelas de hist5rico no SQL Server registram onde foi feito o bac9up do banco de dados+ 6uando ele foi e4ecutado. Se desde ento+ os ar6uivos foram sobrescritos ou e4clu%dos+ voc3 no ser/ capa2 de fa2er uma restuara o a partir desse bac9up. Quando voc3 estiver fa2endo a restaura o+ o primeiro ar6uivo selecionado deve ser um bac9up completo do banco de dados. 7 cai4a de listagem CTirst bac9up to restoreC+ lista os bac9ups completos conhecidos. 7 cai4a de di/logo mostrar/ os bac9ups :unto dos logs de transa 1es e bac9ups diferenciais subse6uentes. O SQL Server seleciona todos ou alguns dos bac9ups diferenciais e de log de transa 1es a serem recuperados+ em con:unto com o bac9up completo+ automaticamente. 7 combina o selecionada pelo SQL Server fornece a imagem mais atuali2ada do banco de dados com o menor tempo de recupera o poss%ve;. Se voc3 no 6uiser restaurar tambm os bac9ups do log de transa 1es+ voc3 pode desselecion/-los clicando na cai4a de verifica o ] es6uerda de cada log. Se voc3 desselecionar algum log+ os logs subse6uentes tambm no sero mais selecionados+ automaticamente. Yoc3 no pode saltar nenhum log de transa 1es no processo de restaura o. Se um bac9up diferencial do banco de dados Aindicado pelo %cone Btiver sido reali2ado+ ele tambm ser/ selecionado+ :unto com o bac9up completo do banco de dados. 7penas o bac9up diferencial mais recente ser/ selecionado. Caso voc3 6ueira restaurar o banco de dados para um ponto espec%fico no tempo+ voc3 deve selecionar um log de transa 1es+ e ento selecionar a cai4a de verifica o C=oint in $ime 0estoreC e informar a data e hora dese:adas para a restaura o na cai4a de di/logo 6ue aparece. ;nt]o o banco de dados retornar/ ao estado em 6ue se encontrava na data e hora selecionadas. 158

Apostila Microsoft SQL Server 7.0

&estaurando bac!u's de log


.m bac9up de log contm apenas as modifica 1es feitas desde o )ltimo bac9up completo. =or isso+ para restaurar um bac9up do log Aindicado pelo %cone B+ voc3 deve restaurar o bac9up do banco de dados mais recente anterior a ele. =or e4emplo+ suponhamos 6ue voc3 fa2 um bac9up completo toda segunda-feira+ e um bac9up do log nos outros dias. Se voc3 6uer restaurar um bac9up+ deve recuperar o bac9up completo+ e depois restaurar cada um dos bac9ups de log+ na ordem em 6ue foram feitos.

$gendando Bac!u's $utom<ticos


Fac9ups devem ser e4ecutados fre6uentemente e regularmente. 7 melhor maneira de fa2er isso criar um trabalho no SQL Server para 6ue o SQL Server 7gent e4ecute-o regularmente. Como a reali2a o de bac9ups afeta o desempenho do SQL Server+ geralmente melhor reali2/-los durante per%odos de bai4a atividade+ por e4emplo nas primeiras horas do dia. Im'ortante@ =ara 6ue 6ual6uer tarefa agendada se:a e4ecutada+ o servi o SQL Server7gent deve estar iniciado. Ye:a em Service ,anager+ uma das maneiras de se iniciar os servi os do SQL Server. =ode ser interessante definir 6ue esse servi o inicie automaticamente na iniciali2a o do computador. H/ tr3s meios de se criar um trabalho de bac9up& .tili2ar o assistente de plano de manuten o de banco de dados (-atabase ,ainteinance =lan !i2ard*& recomendado por6ue tambm agenda outras atividades de manuten o de banco de dados 6ue devem ser reali2adas regularmente. 7gendar um bac9up atravs da interface de ba9cup imediato& a op o mais f/cil. N como fa2er um bac9up imediato Amostrado em 'mplementar um bac9upB+ e4ceto 6ue se seleciona a op o Sc5edule AagendarB antes de se clicar em O9. ;screver os comandos SQL voc3 mesmo e criar a tarefa para e4ecut/-lo. ;ssa op o a mais demorada para ser a:ustada+ mas a 6ue oferec maior fle4ibilidade.

$gendando um bac!u' com'leto de banco de dados ou de log de transa/es utili8ando um assistente


=ara agendar um bac9up de banco de dados com o uso de um assistente+ fa a o seguinte& R. #o ;nterprise ,anager+ selecione o banco de dados cu:o bac9up voc3 6uer agendar. P. Cli6ue no mesmo com o boto direito+ $ll ?as!s+ Mainteinance 7lan.

159

Apostila Microsoft SQL Server 7.0

O. Cli6ue em #e4t at chegar ] tela chamada ;specificar o plano de bac9up do banco de dados (SpecifL the -atabase Fac9up =lan*+ mostrada abai4o& Yoc3 pode optar a6ui por verificar a integridade do bac9up ap5s seu trmino. =ara isso+ cli6ue em CYerifL the integritL of the bac9up on completion of the bac9upC. Cli6ue em Change para agendar 6uando o bac9up ir/ ocorrer. #ote 6ue o default COcorre toda R semana no domingo+ ]s P&JJ 7,.C. 7o clicar em Change+ voc3 ver/ a variedade de op 1es de agendamento dispon%veis. Yoc3 pode definir data inicial e final Aou sem data finalB+ ocorrer diariamente+ semanalmente+ mensalmente+ ou a cada # semanas/meses/dias+ a hora em 6ue ocorrer/+ o dia da semana+ entre outras op 1es. =ara o teste+ cli6ue em C-ailLC+ dei4e R dia e em COccurs onceC+ digite o hor/rio dese:ado. ;scolha entre arma2enar o bac9up em uma unidade de fita ou disco+ e cli6ue em #e4t. 'nforme uma unidade de fita ou diret5rio de disco onde o bac9up dever/ ser escrito. O processo de bac9up ir/ gerar automaticamente um nome de ar6uivo para o bac9up. Yoc3 pode optar por arma2enar o bac9up de cada banco de dados em um diret5rio separado. Fasta clicar em CCreate a subdirectorL ofr each databaseC. Se voc3 6uiser 6ue o trabalho de bac9up e4clua ar6uivos antigos do mesmo diret5rio para liberar espa o no disco r%gido+ opte por Cremover ar6uivos mais antigos 6ueC (0emove Tiles Older $han* e informe um n)mero de semanas. Cli6ue em #e4t.

Q.

?. S.

G. @.

160

Apostila Microsoft SQL Server 7.0

>. 7 pr54ima tela permite 6ue voc3 agende para 6ue ocorra um bac9up tambm do log de transa 1es ao ser reali2ada a tarefa. =ara isso+ selecione CFac9up transaction log as part of the mainteinance planC. 7s op 1es dispon%veis para bac9up do log de transa 1es so as mesmas 6ue para o bac9up do banco de dados Adiret5rio+ hor/rios+ etc...B Ta a suas op 1es e v/ clicando em #e4t at 6ue apare a a tela de relat5rios a gera (0eports to generate*+ mostrada abai4o& #essa tela+ voc3 pode definir se ser/ gerado um relat5rio da opera o de bac9up+ e informar o diret5rio onde o relat5rio ser/ arma2enado. =ode ainda definir um operador para receber por e-mail o relat5rio Apara isso+ voc3 deve ter algum operador definido. -efina algum+ e4pandindo+ no ;nterprise ,anager+ ,anagement. Cli6ue ento com o boto direito em Operartors+ e selecione #e" Operator. 'nforme os dados - nome+ e-mail... - do operador+ e cli6ue em O9.B. Selecione da lista+ o operador 6ue ir/ receber um e-mail com o relat5rio. Cli6ue em #e4t para continuar. RJ. 7parece depois uma tela lhe informando onde ser/ mantido o hist5rico da reali2a o da tarefa+ e voc3 opde definir outro lugar para o mesmo. CLi6ue em #e4t. RR. =or fim+ lhe ser/ mostrada uma tela e4ibindo as op 1es 6ue voc3 acabou de definir para o bac9up do banco de dados. -3 um nome ] tarefa+ e cli6ue em Tinish para 6ue ela se:a criada. $ambm poss%vel agendar o bac9up completo de um banco de dados e4ecutadno os mesmos passos vistos na cria o de um bac9up imediato+ e selecionando Schedule. Cli6ue no boto de retic3nciasA111B+ para definir o agendamento do bac9up. N mais f/cil e mais conveniente definir a tarefa do bac9up usando assistente de plano de manuten o de banco de dados+ devido ] variedade de op 1es dispon%veis.

%omo agendar um bac!u' di+erencial ou de gru'o de ar,uivos


=ara agendar um bac9up de grupo de ar6uivos ou diferencial+ siga os passos para a cria o de um bac9up imediato+ e cli6ue em Schedule+ para definir 6ue ele se:a agendado. Clicando no boto de retic3ncias A111B te permitir/ escolher 6uando e com 6ue fre6u3nciao bac9up ocorrer/.

%riando uma tare+a 'ara agendar um bac!u'


N bastante recomend/vel utili2ar assistentes para a cria o de trabalhos de bac9up 6uando se est/ iniciando a trabalhar com o SQL Server+ mas pode ser 6ue voc3 6ueira modificar tais trabalhos ou mesmo acrescentar um passo para reali2a o de bac9up a um trabalho e4istente.76ui ento mostraremos um e4emplo simples de como criar um trabalho a partir do 2ero+ e como usar comandos SQL para reali2ar tal trabalho e bac9up. 161

Apostila Microsoft SQL Server 7.0

R. #o ;nterprise ,anager+ e4panda a pasta Management+ e4panda o SQL Server $gent+ e cli6ue com o obto direito em Iobs. Selecione >e Iob. P. -3 um nome para o trabalho e selecione a guia Ste's ApassosB.

O. ;scolha Cli6ue no boto >e 111 . 7parece a cai4a de di/logo abai4o. Q. #a guia General+ informe um nome para o passo+ por e4emplo CFac9up do F- pubsC. ?. #a lista ?A'e+ selecione C$ransact-SQL ScriptC. 'sso lhe permitir/ entrar com comandos SQL em %ommand. S. O )ltimo passo digitar o comando SQL a ser e4ecutado na cai4a de te4to Command. =ara fa2er bac9up completo do banco de dados pu6s para um dispositivo de bac9up chamado pu6sA6/Adev+ o comando seria
F7CI.= -7$7F7S; pubs 0O pubsDb9Ddev

=ara reali2ar um bac9up diferencial em pu6s+ o comando seria


F7CI.= -7$7F7S; pubs $O pubsDb9Ddev !'$H -'TT;0;#$'7L

.m bac9up de grupo de ar6uivos+ supondo o ar6uivo authors no gruop de ar6uivos titles+ do banco de dados pubs+ seria feito com o seguinte comando
F7CI.= -7$7F7S; pubs T'L; k KauthorsK+ T'L;80O.= k KtitlesK $O pubsDb9Ddev

Yoc3 pode ver o hist5rico dos trabalhos de bac9up+ selecionando o trabalho em 6uesto no ;nterprise ,anager+ e clicando no mesmo com o boto direito+ selecionando Vie Iob -istorA111

1J - .utros &ecursos
%on+igurao do SQL Server 4ntendendo as ?abelas de Sistema Im'ortao e 4('ortao de Dados 7ublicando dados na Internet

Objetivos: 162

Apostila Microsoft SQL Server 7.0

- ;ntender as configura 1es do SQL e tabelas de sistemas; - Ta2er importa o e e4porta o de dados usando o programa FC=; - 7prender a publicar dados na 'nternet.

%on+igurao do SQL Server


O SQL Server tem v/rias op 1es de configura o+ 6ue geralmente podem ser dei4adas com os valores default mas 6ue+ em alguns casos+ podem ser alteradas para melhorar o desempenho ou a compatibilidade com os padr1es 7#S'. =ara alterar essas op 1es+ use o ;nterprise ,anager. Selecione o servidor a ser configurado+ cli6ue no mesmo com o boto direito+ e em 7ro'erties. #a primeira p/gina+ CGeneralC esto informa 1es gerais sobre o SQL Server+ como o sistema em 6ue ele est/ rodando+ mem5ria+ processador+ diret5rio rai2 e as op 1es para auto-iniciar os servi os. #a p/gina CSecuritAC esto op 1es para selecionar o modo de autentica o Ase integrada ao !indo"s #$+ ou mistaB e op 1es de auditoria relacionadas com a seguran a integrada. #a p/gina CServer SettingsC esto as op 1es de configura o do SQL Server. ;las so& default language for user& indica 6ue l%ngua ser/ usada para mostrar as mensagens de sistema. ;m server be5avior+ h/ tr3s op 1es dispon%veis& C7llo" modifications to be made directlL to the sLstem catalogsC& se selecionada permite 6ue mudan as se:am feitas ] tabelas de sistema diretamente+ atravs de comandos como '#S;0$+ .=-7$;+ ou -;L;$;. =or padro+ isso no pode ocorrer. ,udan as ]s tabelas do sistema s5 so feitas atravs de procedimentos arma2enados de sistema. Cuidado``` =ermitir 6ue tabelas de sistema se:am atuali2adas diretamente pode fa2er com 6ue seu servidor no funcione ade6uadamente+ ou nem se6uer iniciali2e.* C7llo" triggers to be fired "hich fire other triggers Anested triggersBC& se selecionada+ permite 6ue se defina gatilhos 6ue+ em seu disparo+ disparam outros gatilhos Agatilhos aninhadosB. C.se 6uerL governor to prevent 6ueries e4ceeding specified costC& com essa op o selecionada+ voc3 pode definir um tempo limite+ em segundos+ para e4ecu o de consultas. #o permitido e4ecutar consultas 6ue ultrapassem tal tempo limite. 7 op o referente ao SQL ,ail permite 6ue voc3 defina uma conta ,7=' para o SQL ,ail utili2ar. Com o SQL ,ail+ mensagens podem ser enviadas por um gatilho ou porcedimento arma2enado. =ode-se tambm processar consultas recebidas por e-mail e retornar os resultados criando um mail de resposta. =ara maiores informa 1es sobre como configurar o SQL ,ail+ consulte o cap%tulo CSQL ,ailC+ em C'ntegrating SQL Server "ith other toolsC+ dentro do livro C7dministering SQL ServerC+ no boo9s online. Yoc3 tambm define a% como sero tratados os anos informados com dois d%gitos. #a p/gina C%onnectionsC+ voc3 pode definir o n)mero m/4imo de cone41es simultZneas com o SQL Server (,a4imum concurrent user connections*. O padro J AilimitadoB. $ambm pode-se definir op 1es de cone4o+ em C-efault connection optionsC. 7lm disso+ voc3 pode permitir o estabelecimento de cone41es remotas atravs de 0=C (7llo" other SQL serversto connect remotelL to this server using 0=C*; pode definir o tempo limite de uma consulta Ao padro J+ 6ue indica tempo ilimitadoB; por fim+ pode for ar transa 1es distribu%das. #a p/gina CDatabase settingsC encontram-se algumas op 1es relativas a bancos de dados& a o o Cdefault fill factorC permite 6ue voc3 determine 6ual o fator de preenchimento de p/ginas padro 6uando da cria o de um novo %ndice em dados e4istentes. 7% voc3 tem duas op 1es& C-efault AoptimalBC 6ue fa2 com 6ue o SQL a:uste o fator de preenchimento automaticamente+ e CTi4edC 6ue te permite definir o fator de preenchimento Avalores em porcentagemB. 163

7 op o CFac9up/restoreC define 6uanto tempo o SQL Server deve esperar ao tentar ler uma fita de um dispositivo de fita& 'ndefinidamente (indefinitelL*+ tentar uma ve2 e desistir (trL once then 6uit*+ ou tentar durante # minutos (trL for minutes*. 7 op o Cdefault bac9up media retentionC especifica depois de 6uanto tempo o SQL Server vai reescrever em uma fita com bac9up. Ou se:a+ se voc3 grava um bac9up ho:e+ e define esta op o para G dias+ s5 depois de G dias 6ue o SQL Server vai escrever de novo nessa fita. Se voc3 tentar escrever antes de decorrido esse pra2o+ receber/ uma mensagem de erro. C0ecoverL interval AminBC. .se esta op o para determinar o n)mero m/4imo de minutos por banco de dados 6ue o SQL Server precisa para recuper/-los. 7 cada ve2 6ue o SQL Server inicia+ ele recupera cada banco de dados+ desfa2endo transa 1es 6ue no haviam sido finali2adas+ e refa2endo transa 1es 6ue haviam sido finali2adas+ mas cu:os dados no haviam sido escritos para o disco 6uando o SQL Server parou. 76ui voc3 define um limite superior de tempo para recupera o de cada banco de dados. O padro J+ indicando configura o autom/tica pelo SQL Server. #a pr/tica+ isso significa um tempo de recupera o de menos de um minuto e um chec9point apro4imadamente a cada minuto para bancos de dados ativos. O SQL Server estima 6uantas modifica 1es de dados ele pode efetivar no intervalo+ e fa2 um chec9point no banco de dados 6uando o n)mero de modifica 1es de dados feitas no banco de dados depois do )ltimo chec9point alcan a o n)mero 6ue o SQL Server estima 6ue pode efetivar no intervalo. #a p/gina CMemorAC+ voc3 pode definir como 6uer 6ue o SQL Server alo6ue mem5ria para si. Yoc3 opde optar entre aloca o dinZmica+ sob demanda+ de mem5ria Aa op o padroB+ definindo a% a 6uantidade m%nima e m/4ima de mem5ria 6ue o SQL Server pode alocar Apor padro+ o m%nimo J e o m/4imo a mem5ria total do sistemaB; ou ento optar por determinar uma 6uantidade fi4a de mem5ria a ser usada pelo SQL Server (.se a fi4ed memorL si2e*+ 6ue sempre estar/ alocada para o mesmo+ e definir em 6uanto ficar/ fi4ada essa 6uantidade de mem5ria.7 op o C0eserve phLsical emorL for SQL ServerC+ se selecionada+ indica 6ue no ser/ feito se6uer s.ap nas p/ginas de mem5ria do SQL Server; as mesmas estaro sempre dispon%veis em 07,. #o use esta op o se voc3 permitir 6ue o SQL Server alo6ue mem5ria dinamicamente. =or fim+ a op o Cminimum 6uerL memorLC indica a 6uantidade m%nima de mem5ria a ser alocada para a e4ecu o de uma consulta. O aumento desse valor pode resultar em desempenho melhor na reali2a o de certos tipos de consultas. #a p/gina C7rocessorsC voc3 encontra op 1es relativas ] otimi2a o do SQL Server em m/6uinas multiprocessadas Ase o =arallelismB. #a se o C=rocessor controlC da p/gina =rocessors+ voc3 tem as op 1es CFoost SQL Server prioritL on !indo"s #$C+ 6ue far/ com 6ue os processos do SQL Server tenham prioridade maior sobre os outros processos em e4ecu o Acuidado ao usar essa op o pois outras tarefas reali2adas no #$ onde o SQL Server est/ rodando podem ficar pre:udicadasB. 7 op o Cma4 "or9er threadsC te permite definir o n)mero m/4imo de tarefas AthreadsB 6ue estaro dispon%veis para processos do SQL Server Ao padro P??+ 6ue funciona bem na maioria dos casos. cs ve2es+ a diminui o desse n)mero+ pode melhorar o desempenhoB. Se voc3 marcar a op o C.se #$ fibersC voc3 pode ter um aumento no desempenho+ :/ 6ue o escalonamento de tarefas AthreadsB poder/ ser feito no modo usu/rio Apelo uso das +i6ersB+ sem a necessidade de torca de conte4to para o modo 9ernel 6ue o uso apenas de threads implica. =rocure por C$hread and tas9 architectureC no Foo9s online para entender melhor isso. >ota@ algumas dessas op 1es s5 t3m efeito depois de parar e reiniciar o servi o ,S SQL Server. Outras delas s5 permitem altera o se voc3 definir 6ue se:am mostradas op 1es avan adas. =ara isso+ no QuerL 7nalL2er+ digite
spDconfigure Ksho" advanced optionsK+ R

Apostila Microsoft SQL Server 7.0

depois pare e reinicie o servi o ,S SQL Server. 7% voc3 poder/ alterar 6ual6uer das op 1es citadas.

164

Apostila Microsoft SQL Server 7.0

4ntendendo as ?abelas de Sistema


7s tabelas de sistema cont3m informa o atuali2ada automaticamente pelo SQL Server+ 6ue no pode ser alterada diretamente. #o entanto+ elas so )teis para fa2er consultas ] pr5pria estrutura do banco de dados. ;ssas tabelas so todas documentadas no help do SQL Server A$ransact-SQL HelpB.

%onsultando sAsob:ects
7 tabela s&so6<ects+ por e4emplo+ contm informa 1es sobre todos os ob:etos do banco de dados. 7s seguintes colunas so )teis& varchar(F name O nome do ob:eto. 5% .m n)mero de identifica o. =ode ser obtido tambm com a fun o id int OFM;C$D'-AnomeB. $ipo do ob:eto& .& tabela de .su/rio+ S& tabela do Sistema+ Y& Yiso+ =& t&pe char(J% procedimento+ 0& regra+ -& default+ $0& trigger (gatilho*+ C& restri o Chec9+ I& chave prim/ria ou restri o .#'Q.;+ T& Toreign 9eL Achave estrangeiraB crdate datetime 7 data/hora em 6ue o ob:eto foi criado. =or e4emplo+ para saber se uma tabela chamada Cliente :/ e4iste e e4clu%-la caso e4ista+ pode ser usado o teste&
if e4ists Aselect d from sLsob:ects "here tLpekK.K and namekKClienteKB drop table Cliente

=ara ver todos os nomes de ob:etos do banco de dados+ use&


select tLpe+ name+ id from sLsob:ects order bL tLpe

7s suas tabelas aparecem perto final da lista+ pois so do tipo K.K.

$ tabela sAscolumns
7 tabela s&scolumns relacionada com s&so6<ects e guarda informa o sobre cada coluna de cada tabela. $ambm guarda informa 1es sobre parZmetros de procedimentos arma2enados. Seus colunas mais importantes so& 'dentificador da tabela ou do procedimento arma2enado. Ta2 refer3ncia id int a s&so6<ects#id# #)mero se6gencial da coluna dentro da tabela Aou do parZmetro dentro colid int do procedimentoB. t&pe int 'dentifica o tipo de dados b/sico+ 6ue fa2 refer3ncia a s&st&pes#t&pe. length int $amanho da coluna ou 2ero se no se aplica. usert&pe int $ipo de dados definido pelo usu/rio. Ta2 refer3ncia a s&st&pes#usert&pe. name varchar(F5% #ome da coluna. =or e4emplo+ para listar todas as tabelas de usu/rio e suas colunas+ use&
select so.name $abela+ sc.name Coluna from sLsob:ects so inner :oin sLscolumns sc on so.id k sc.id "here so.tLpe k K.K

=odem aparecer tabelas chamadas dtproperties. ;ssa tabelas e4istem para arma2enar diagramas do banco de dados.

>o/es sobre diagramas


-iagramas servem para permitir 6ue se visuali2e graficamente a estrutura do banco de dados sem se alterar os dados do mesmo. 7travs dos diagramas+ voc3 tambm pode testar novas estruturas para as tabelas+ sem alterar o banco de dados. 7lm disso+ pode-se criar novos %ndices+ tabelas e relacionamentos atravs deles. 165

Apostila Microsoft SQL Server 7.0

=ara criar um diagrama+ voc3 clica com o boto direito no banco de dados 6ue ter/ seu diagrama criado Ano ;nterprise ,anager+ claroB+ seleciona #e" \ -atabase -iagram. 7% aparece o assistente de cria o de diagramas+ 6ue lhe pergunta 6uais tabelas voc3 6uer incluir no diagrama. 'nforme-as+ e 6uando clicar em #e4t+ aparecer/ o diagrama mostrando o relacionamento entre as tabelas Acaso e4istaB. Quando voc3 sai da :anela de diagrama+ voc3 pode salv/-lo com um nome 6ual6uer. =ara saber mais sobre diagramas+ consulte C-atabase -iagramsC+ no cap%tulo CCreating and ,aintaining databasesC do boo9s online

Im'ortao e 4('ortao de Dados


O programa FC= um utilit/rio de linha de comando Ano gr/ficoB usado para importar ou e4portar tabelas de/para o SQL Server. ;le reconhece formatos de te4to+ bem como formatos bin/rios. =ara e4portar o conte)do da tabela Cliente+ por e4emplo+ para um ar6uivo chamado CL';#$;.$<$+ use-o da seguinte forma+ na linha de comando Aconsole do !indo"s #$ ou prompt do -OS no !indo"s >4B&
FC= ;4emplo..Cliente O.$ CL';#$;.$<$ -c -S nomeAdoAservidor -. sa -=

#o caso+ K;4emploK o nome do banco de dados+ a op o O.$ especifica 6ue os dados sero e4portados+ CL';#$;.$<$ o nome do ar6uivo 6ue ser/ criado. 7 op o C-cC indica um ar6uivo no formato te4to. Se fosse usado C-nC+ seria usado o formato CnativoC+ isto + com dados bin/rios. 7 op o C-SC especifica o nome do servidor Asubstitua nomeAdoAservidor pelo nome do seu servidorB. Tinalmente C-.C e C-=C especificam o nome de usu/rio e senha+ respectivamente. Se a senha for va2ia+ C-=C deve ser a )ltima op o na linha de comando. #ote 6ue as op 1es so sens7veis ao caso Amai)sculas e min)sculas so diferentesB. O ar6uivo CL';#$;.$<$ pode ser alterado em 6ual6uer editor+ ou importado em outro banco de dados. Se voc3 e4ecutar FC= O.$ sem usar C-cC+ ele ir/ 6uestionar interativamente o tamanho de cada coluna a ser usada. =ara importar uma tabela+ e4istem alguns detalhes. 7 importa o muito mais r/pida Aespecialmente no caso de tabelas grandesB se o banco de dados permitir opera o sem log (nonlogged*+ ou se:a+ inserir linhas sem atuali2ar o log de transa 1es. =ara ativar essa op o+ no ;nterprise ,anager+ cli6ue com o boto direito no banco de dados e 7ro'erties. -epois cli6ue na p/gina COptionsC+ mar6ue CSelect into/bul9 copLC e cli6ue O9. =ara teste+ crie uma nova tabela com a mesma estrutura da tabela Cliente chamada C$empClienteC. 'mporte os dados e4ecutando& >ota@ Yoc3 pode criar uma c5pia da tabela Cliente+ clicando na mesma com o boto direito+ depois em 7ll $as9s \ 8enerate SQL Scripts. 7% cli6ue em =revie". -epois 6ue terminar-se de gerar o script+ cli6ue em CopL+ e o script SQL ser/ posto na /rea de transfer3ncia. Fasta depois col/-lo no QuerL 7nalL2er+ mudando o nome da tabela+ e e4ecutar o comando.Lembre-se de retirar as primeiras linhas Aat o 8OB+ 6ue verificam se a tabela e4iste+ e se e4istir+ a e4cluem+ posicione-se no banco de dados onde voc3 6uer a tabela criada.
FC= ;4emplo..$empCliente '# CL';#$;.$<$ -c -S nomeAdoAservidor -. sa -=

Se a tabela tivesse uma coluna '-;#$'$^+ voc3 deveria incluir tambm a op o C-;C para usar S;$ '-;#$'$^D'#S;0$ nomeAta6ela O# durante a importa o de dados. Outras op 1es+ especialmente )teis com tabelas grandes+ so C-T numeroAlinhaC e C-L numeroAlinhaC. ;las permitem especificar respectivamente+ os n)meros da primeira e )ltima linha 6ue sero importadas ou e4portadas. 7 op o C-b tamanhoC di2 a 6uantidade de linhas 6ue enviada em cada CbatchC Alote de atuali2a 1esB. =ode ser aumentada em rela o ao default.

166

Apostila Microsoft SQL Server 7.0

7ublicando dados na Internet


O SQL Server !eb 7ssistant permite publicar dados do SQL Server em formato H$,L+ ou se:a p/ginas !eb. ;ssas p/ginas podem ser colocadas num servidor !eb e visuali2adas numa 'ntranet ou na 'nternet com um bro"ser Aprograma 6ue visuali2a H$,LB. 7s p/ginas+ a priori+ no so alteradas dinamicamente+ mas com o uso do 7ssistente+ voc3 pode definir uma periodicidade de atuali2a o da p/gina. =ara e4ecut/-lo+ no ;nterprise ,anager+ selecione $ools \ !i2ards. Cli6ue no sinal de mais AeB ao lado de ,anagement+ e selecione !eb 7ssistant !i2ard. 7parece a tela de boas-vindas do !eb 7ssistant !i2ard. Cli6ue em #e4t. >ota@ voc3 tambm pode e4ecutar o !eb 7ssistant+ e4pandindo o servidor cu:os dados se 6uer publicar+ e4pandindo a pasta ,anagement. 7%+ cli6ue com o boto direito em Deb 7ublis5ing+ e em >e Deb $ssistant Iob.

Select Database
76ui voc3 deve informar de 6ual bancos de dados sero selecionadas as tabelas e colunas. ;scolha da lista o banco de dados dese:ado. Cli6ue em #e4t para continuar.

Start a >e

Deb $ssistant Iob

'nforme um nome para o trabalho do 7ssistente !eb+ e informe de 6ue forma viro os dados 6ue voc3 dese:a publicar. 7s op 1es so as seguintes& C-ata from the tables and columns ' selectC& selecionando esta op o+ lhe ser/ permitido escolher 6uais colunas e tabelas fornecero os dados para publica o.Caso voc3 selecione esta op o siga para Sele o de tabelas e colunas. C0esult setAsB of a stored procedure ' selectC& mostrar/ os resultados da e4ecu o de um procedimento arma2enado ] sua escolha. Caso voc3 selecione esta op o siga para Sele o de procedimentos arma2enados. C-ata from the $ransact-SQL statement ' specifLC& obterm os dados a serem mostrados atravs de uma se6u3ncia de comandos SQL 6ue voc3 informar. Caso voc3 selecione esta op o siga para 'nformando comandos. Teita sua sele o cli6ue em #e4t para continuar. 7s pr54imas :anelas a serem mostradas dependem do 6ue voc3 selecionou no passo acima. Seleco de tabelas e colunas #a tela mostrada abai4o+ selecione as colunas 6ue voc3 dese:a 6ue se:am mostradas no seu resultado+ selecionando-as do lado es6uerdo da tela Aembai4o de $able columnsB e clicando em $dd. Caso 6ueira selecionar todas colunas da tabela em 6uesto+ cli6ue em $dd $ll. #ote 6ue as tabelas selecionadas aparecem do lado direito da tela+ embai4o de CSelected columnsC. =ara remover alguma coluna selecionada+ selecione-a e cli6ue em 0emove.

167

Apostila Microsoft SQL Server 7.0

Caso 6ueira e4ibir colunas de outras tabelas+ selecione-as atravs da lista C7vailable tablesC. Cli6ue em #e4t para continuar. 7parece a tela Select ro s+ onde voc3 pode especificar o critrio de sele o das linhas a serem mostradas. Yoc3 disp1e nessa tela de tr3s op 1es+ 6ue so& 7ll of the ro"s& mostrar/ todas as linhas da tabela 6ue houver sido selecionada. COnlL those ro"s that meet the follo"ing criteriaC& a6ui voc3 pode definir um critrio para e4ibi o das linhas+ especificando uma coluna de uma tabela+ um critrio de compara o Ak+ nb+ n+ b+ bk+ nkB+ e um valor An)mero+ string+ o 6ue forB. S5 sero e4ibidas as colunas 6ue se en6uadrarem no critrio especificado. COnlL those ro"s that 6ualifL using the follo"ing $ransact-SQL !H;0; clauseC& s5 sero e4ibidas as linhas 6ue atendam ] declara o !H;0; 6ue voc3 informar na cai4a de te4to logo abai4o. Cli6ue em #e4t e v/ para Schedule the !eb 7ssistant :ob. Seleo de 'rocedimentos arma8enados1

#a tela mostrada abai4o+ selecione o procedimento arma2enado cu:o resultado voc3 6uer 6ue se:a publicado.

168

Apostila Microsoft SQL Server 7.0

Cli6ue em #e4t. Lhe ser/ pedido para informar valores para todos os parZmetros necess/rios para o funcionamento do procedimento arm2aenado. 'nforme-os+ cli6ue em #e4t+ e v/ para Schedule the !eb 7ssistant :ob. In+ormando comandos -igite na cai4a de te4to a se6u3ncia de comandos SQL 6ue voc3 6uer 6ue se:a e4ecutada de modo a mostrar os resultados a serem publicados. Cli6ue em #e4t e v/ para Schedule the !eb 7ssistant :ob

Sc5edule t5e Deb $ssistant :ob


#esta tela+ voc3 pode definir 6uando e com 6ue fre6u3ncia ser/ gerada a p/gina !eb.

169

Apostila Microsoft SQL Server 7.0

Com a primeira op o selecionada+ a p/gina ser/ gerada apenas uma ve2 6uando o assistente for conclu%do Ano nosso caso+ dei4aremos essa primeira op o selecionadaB. Quando voc3 seleciona 6ual6uer outra op o+ voc3 pode definir se ser/ ou no gerada uma p/gina 6uando da concluso do assistente. Aop o C8enerate a !eb page "hen the "i2ard is completedC+ se marcada+ gera uma p/gina 6uando completa o assistente.B. 7s outras op 1es so& (Sob demanda*. O trabalho e4ecutado mais tarde. -eve-se e4ecutar o On demand !eb 7ssistant de novo para e4ecutar a tarefa (7penas uma ve2 em*. 7 p/gina s5 gerada uma )nica ve2+ no dia e hora Onl& one time at: especificados. (Quando os dados do SQL Server mudarem* Quando uma ou mais )hen the SQL coluna de uma tabela forem alterados. ;ssa op o cria um gatilho na Server data changes tabela para notificar automaticamente o !eb 7ssistant das altera 1es. (;m intervalos regularmente agendados*. =or e4emplo+ a cada P horas+ a At regularl& cada P dias etc. Cli6ue em #e4t e+ para esta op o+ lhe ser/ peritido scheduled intervals definir a periodicidade de tais intervalos. Cli6ue em #e4t para continuar.

7ublis5 t5e

eb 'age

Yoc3 deve informar o nome do ar6uivo. =ara o teste+ mantenha -:;MSSQL4EH$,LE!eb=ageR.H$,. #ote 6ue o caminho para o ar6uiv pode ser um caminho local+ um caminho de rede+ ou at um caminho de um servidor T$=.Cli6ue em #e4t.

Format t5e Deb 'age


7gora+ voc3 pode obter a a:uda do assistente para formatar a p/gina (^es+ help me format the "eb page* ou criar o ar6uvo a partir de um modelo (#o+ use template file from...CB 6ue usado para definir a formata o da p/gina. Caso voc3 opte por usar a a:uda do assistente para formatar a p/gina+ selecione o con:unto de caracteres a ser usado. =ara nosso teste+ dei4e o padro (.niversal 7lphabet A.$T-@B*. Cli6ue em #e4t.

S'eci+A titles
76ui voc3 define o t%tulo da p/gina (!hat do Lou "ant to title the !eb pagea*+ e o t%tulo da tabela H$,L 6ue conter/ os dados (!hat do Lou "ant to title the H$,L table that contains the dataa*. Yamos informar o t%tulo da p/gina& C$estando o !eb 7ssistantC e o t%tulo para o resultado& C0ela o de ClientesC. Yoc3 ainda pode definir 6ue tamanho ter/ o t%tulo da tabela (!hat si2e should the H$,L table title font bea* AHR+ HP+ HO..B. =ode ainda escrever a data e hora de publica o da p/gina (7pplL a time and date stamp to the !eb page*. Cli6ue em #e4t.

Format a table
76ui+ voc3 decide se 6uer os nomes das colunas sendo e4ibidas na tabela H$,L. (-o Lou "ant column names displaLed in the H$,L tablea*. 7inda poss%vel definir as caracter%sticas da fonte dos dados da tabela (!hat font characteristics do Lou "ant to applL to the table dataa*. =or fim+ pode optar por desenhar bordas ao redor da tabela (-ra" border lines around the H$,L table*. Cli6ue em #e4t.

$dd -A'erlin!s to t5e Deb 7age


7gora+ voc3 pode incluir um ou mais lin9s para outras .0Ls Aendere os 'nternetB+ com v/rias op 1es& C#oC. #o incluir/ nenhum lin9 para .0Ls nas sua p/gina. C^es+ add one hLperlin9C& especifi6ue a .0L 6ue voc3 6uer Clin9arC e um r5tulo para esse lin9 (HLperlin9 label*. 170

C^es+ add a list of hLperlin9 .0Ls. Select them from a SQL Server table "ith the follo"ing SQL statementC& voc3 pode ainda informar as .0Ls dando um S;L;C$ em colunas de tabelas dos seus bancos de dados. -igite os comandos SQL na cai4a de te4to. Limit 0o"s =ode-se limitar o n)mero de linhas a serem e4ibidas na p/gina+ com algumas op 1es. 7s primeiras duas op 1es definem se sero e4ibidas todas (#o+ return all ro"s of data*+ ou as primeiras # linhas (^es. 0eturn the first ro"s of data.* 7s outras duas op 1es lhe permitem definir se todos os dados sero postos em uma )nica p/gina (#o+ put all data in one scrolling page*+ ou em diversas p/ginas ligadas por hiperlin9s (^es+ lin9 the successive pages togheter.*. #o )ltimo caso+ voc3 deve informar 6uantas linhas sero e4ibidas por p/gina. Cli6ue em #e4t. Tinalmente+ voc3 v3 a tela final do assistente+ lhe mostrando as op 1es deifnidas na cria o dessa tarefa. 7%+ voc3 ainda tem a op o de escrever o c5digo SQL gerador de tal tarefa para um ar6uivo (!rite $ransact-SQL to Tile...*. Cli6ue em Tinish.

Apostila Microsoft SQL Server 7.0

?estando a '<gina
7bra a p/gina no 'nternet ;4plorer para visuali2ar o seu resultado.

Os lin9s abai4o contm os scripts SQL para facilitar o acompanhamento da apostila. 7bra-os e visuali2e no se" Cbro"serC. =ara utili2/-los+ selecione-os+ copie e cole para o QuerL 7nalL2er. =ara voltar para esta p/gina+ use o boto F7CI de seu bro"ser+ ou o menu de navega o ] es6uerda na tela. ;4ecute-os de prefer3ncia+ em se6u3ncia.

De+inindo novos ti'os de dados

171

Apostila Microsoft SQL Server 7.0

N $dicionando
spDaddtLpe K$C;=K+ KcharARJBK+ KnullK 8O spDaddtLpe K$;stadoK+ KcharAPBK+ KnullK 8O spDaddtLpe K$QuantidadeK+ KnumericARJ+PBK+ Knot nullK 8O spDaddtLpe K$$elefoneK+ Kvarchar APJBK+ KnullK 8O spDaddtLpe K$$ipoOperacaoK+ KSmall'ntK+ KnullK go spDaddtLpe K$Yalor8ranteK+ KnumericAR?+PBK

N &emovendo
spDdroptLpe $$ipoOperacao 8O spDdroptLpe $Yalor8rante

%riando ?abelas
/dddddd $able CategoriaContato dddddd/ C0;7$; $7FL; CategoriaContato A CodCategoria int #O$ #.LL+ #ome varchar ASJB #.LL B 8O /dddddd $able Contato dddddd/ C0;7$; $7FL; Contato A $ipo charARB #O$ #.LL CH;CI A$ipo in AK=K+K;KBB+ Codigo int #O$ #.LL+ CodigoSub int #O$ #.LL+ #ome varchar ASJB #.LL B 8O /dddddd $able ;mpresa dddddd/ C0;7$; $7FL; ;mpresa A Cod;mpresa int #O$ #.LL+ #ome varchar ASJB #.LL+ 0a2aoSocial varchar ASJB #.LL+ -- campos adicionais -ataCadastro datetime #.LL+ #otas te4t #.LL B 8O

172

Apostila Microsoft SQL Server 7.0 /dddddd $able =roduto dddddd/ C0;7$; $7FL; =roduto A Cod=roduto int #O$ #.LL+ #ome varcharASJB #.LL+ -escricao varcharASJB #.LL+ Quant-isponivel $Quantidade #O$ #.LL CH;CI AQuant-isponivel bk JB Quant,inima $Quantidade #.LL+ Locali2acao varchar A?JB #.LL+ =reco moneL #O$ #.LL CH;CI A=reco b JB B 8O /dddddd $able ,ovimentacao=roduto dddddd/ C0;7$; $7FL; ,ovimentacao=roduto A Cod,ov=roduto int #O$ #.LL+ -- chave estrangeira da tabela Contato $ipoContato charARB #.LL+ CodContato int #.LL+ CodSubContato int #.LL+ -- chave estrangeira da tabela =roduto Cod=roduto int #O$ #.LL+ Quantidade $Quantidade #O$ #.LL+ -ata,ov datetime #O$ #.LL -;T7.L$ AgetdateABB+ -- ; k ;ntrada+ S k Sa%da $ipo,ov charARB #O$ #.LL CH;CI A$ipo,ov in AK;K+KSKBB B 8O /dddddd $able =essoa dddddd/ C0;7$; $7FL; =essoa A Cod=essoa int #O$ #.LL+ #ome Se4o Tone Ta4 B 8O /dddddd $able Subdivisao dddddd/ C0;7$; $7FL; Subdivisao A -- chave prim/ria Cod;mpresa int #O$ #.LL+ CodSubdivisao int #O$ #.LL+ #ome varchar A?JB #.LL+ Tone $$elefone #.LL+ Ta4 $$elefone #.LL+ -- colunas de endere o 0ua varchar A?JB #.LL+ Fairro varchar AP?B #.LL+ Cidade varchar AQJB #.LL+ varchar A?JB #.LL+ charARB #O$ #.LL+ $$elefone #.LL+ $$elefone #.LL

-;T7.L$ J+

173

Apostila Microsoft SQL Server 7.0 ;stado C;= C8C $;stado #.LL+ $C;= #.LL+ varchar AR@B #.LL+

-- colunas adicionais -ataCadastro datetime #.LL+ #otas te4t #.LL B 8O /dddddd $able 0el;mpresaCategoria dddddd/ C0;7$; $7FL; 0el;mpresaCategoria A Cod;mpresa int #O$ #.LL+ CodCategoria int #O$ #.LL B 8O /dddddd $able 0el=essoaCategoria dddddd/ C0;7$; $7FL; 0el=essoaCategoria A Cod=essoa int #O$ #.LL+ CodCategoria int #O$ #.LL B 8O

/dddddd $able 0elSubdivisao=essoa dddddd/ C0;7$; $7FL; 0elSubdivisao=essoa A Cod;mpresa int #O$ #.LL+ CodSubdivisao int #O$ #.LL+ Cod=essoa int #O$ #.LL+ Cargo B 8O varchar AOJB #.LL

/dddddd $able ,ov7cumulado dddddd/ C0;7$; $7FL; ,ov7cumulado A Cod=roduto int #O$ #.LL+ $otalYendas $Quantidade+ $otalCompras $Quantidade B 8O /dddd $able $emporaria ddddd/ C0;7$; $7FL; $emporaria A Codigo int #O$ #.LL+ #ome varchar A?JB #.LL B

174

Apostila Microsoft SQL Server 7.0 /dddd $able $emporariaR ddddd/ C0;7$; $7FL; $emporaria A Codigo int #O$ #.LL+ #ome varchar A?JB #.LL B

$ltera; renomeia e e(clui tabelas1

$lter ?able
N %am'o
7L$;0 $7FL; =essoa 7-- 0ua varcharASJB null+ Cidade varcharAOJB null+ Fairro varcharAOJB null+ C;= $C;= #.LL+ ;stado $;stado #.LL+ C=T varchar ARQB #.LL+ -ataCadastro datetime #.LL -;T7.L$ AgetdateABB+ #otas te4t #.LL

&enomear ?abela
spDrename K$emporariaRK+ $emporaria$este 8O spDrename K$emporaria.codigoK+ cod

&emover ?abela
drop table $emporaria+ $emporaria$este

4staro criadas as tabelas; todas va8ias1 Deve-se e(ecutar o scri't Dados?odos; ,ue colocar< dados em todas elas1 %oloca dados em todas as tabelas ",ue :< devem ter sido criadas#1

Insere diversos dados nas tabelas :< criadas


dump transaction Contatos "ith truncateDonlL+ noDlog 8O /dddd =essoa ddddd/

175

Apostila Microsoft SQL Server 7.0 insert into =essoaACod=essoa+#ome+Se4o+Tone+Ta4+0ua+Fairro+Cidade+;stado+C;=B values AR+ K7brlio Tren9elK+ KTK+ KPPP-P@GJK+ KJOR-P>?-QJ>?K+ K7v. 8oi s+ OQ? sala PK+ KK+ K8oisniaK+ K8OK+ K KB insert into =essoaACod=essoa+#ome+Se4o+Tone+Ta4+0ua+Fairro+Cidade+;stado+C;=B values AP+ K7dto -iasK+ KTK+ KPSR-@PSOK+ KPPP-QP@JK+ K0ua C- RQS+ SSRK+ KK+ K8oisniaK+ K8OK+ KKB insert into =essoaACod=essoa+#ome+Se4o+Tone+Ta4+0ua+Fairro+Cidade+;stado+C;=B values AO+ K7dto =ereiraK+ KTK+ KPOQ-GG??K+ KnJo lembraK+ K 0ua P+ R?RK+ KSetor .niversit rioK+ K8oisniaK+ K8OK+ KKB insert into =essoaACod=essoa+#ome+Se4o+Tone+Ta4+0ua+Fairro+Cidade+;stado+C;=B values AQ+ K7debaldo #epomucenoK+ KTK+ KPQO-SQS?K+ KP>R-OP?GK+ K7v. PQ de Outubro+ Q?K+ KK+ K8oisniaK+ K8OK+ KGQPR?-JOJKB insert into =essoaACod=essoa+#ome+Se4o+Tone+Ta4+0ua+Fairro+Cidade+;stado+C;=B values A?+ K7driano MesusK+ K,K+ KP@R-SGG>K+ KP>?-QPRGK+ K7v. =erimetral #orte+ OPORK+ K K+ K8oisniaK+ K8OK+ K KB

/dddd =roduto dddd/insert into =rodutoACod=roduto+#ome+-escricao+Quant-isponivel+Quant,inima+Locali2acao+=recoB valuesAR+CLZmpadas R?J YC+CC+Q.JJ+P.JJ+C;stante + =rateleira + -iviso C+R?.JJJJBinsert into =rodutoACod=roduto+#ome+-escricao+Quant-isponivel+Quant,inima+Locali2acao+=recoB valuesAP+C$oner/Laser MetC+CC+R.JJ+J.JJ+C7rm/rio JR+ =rateleira JP+ C+R?.JJJJB %onsultando dados; +un/es matem<ticas; de caracteres; data)5ora; converso de dados e condi/es de 'es,uisa1

%onsultando Dados
%onsultando verso do SQL Server
Select UUversion

Mostrando valor de uma string


Select K$esteK

%onsultando todas as colunas


d ,ostrar 6uais so as pessoas e4istente no contatosa Select d from pessoa

%onsultando em outro banco de dados

d ,ostrar 6uais so os autores cadastrados no bando de dados =ubsa select d from pubs..authors

%onsultando outras colunas 176

Apostila Microsoft SQL Server 7.0 d ,ostrar o nome+ telefone e fa4 das pessoas cadastradas no contatosa Select nome+ fone+ fa4 from pessoa

%onsultando outras colunas; mudando o cabeal5o das colunas retornadas


d ,ostrar as empresas cadastradas no contatosa select nome K#ome TantasiaK+ ra2aosocial K0a2o SocialK+ -ataCadastro Cadastro from empresa

3sando condi/es
d Quais so as pessoas + cu:o+ estado igual a K8oK e cidade igual a K8oiZniaK a select #ome+ Tone from pessoa "here cidade k K8oiZniaK and estado k K8oK

Mani'ulando 4('ress/es
d ,ostrar os pre os de cada produto + ap5s um aumento de RJia select nome =roduto+ =reco =re o+ Apreco d R.RB C=re o com RJi de aumentoC from produto

Fun/es Matem<ticas
d ,ostrar os pre os de cada produto + ap5s um aumento de RJi arredondando o valor com duas casas decimaisa select nome =roduto+ =reco =re o+ roundAApreco d R.RB+ PB C=re o arredondadoC from produto select po"erAQ+PB+ piAB+ asciiAK7KB

Fun/es de caracteres
d ,ostrar os produtos com as descri 1esa select #ome e K-K e descricao K=roduto/-escri oK from produto d ,ostrar os produtos + onde os nomes podem aparecer com PJ caracteres e o pre o com S casas decimais antes da v%rgula e P casas depois da v%rgulaa Select substringA#ome+ R+ PJB =roduto + strApreco+ S+ PB =re o from produto d 0epetir a letra a RJ ve2es. select replicateAKaK+ RJB

177

Apostila Microsoft SQL Server 7.0

Fun/es de Data)5ora
select datacadastro K-ata CadastroK+ date7ddAmm+ R+datacadastroB K7dicionando R ,3sK + date-iffAdd+ datacadastro+ getdateABB KSubtraindo -atasK+ datepartALL+ datacadastroB 7no+ datepartAd"+ datacadastroB Semana from empresa

%onverso de Dados
select convertAcharARJB+ nomeB K#ome SubdivisoK+ convertAchar+ datacadastro+ RJOB K-ata Tormato FrasileiroK from subdivisao

%ondi/es de 7es,uisa

d Quais so os produtos+ cu:a 6uantidade dispon%vel em esto6ue menor 6ue a 6uantidade m%nima permitidaa Select nome + 6uantdisponivel+ 6uant,inima from produto !here 6uant-isponivel n 6uant,inima d Quais as pessoas 6ue no foi informado o telefonea Select nome from pessoa "here fone is null d Quais as subdivis1es 6ue esto no estado de 8oi/s e $ocantinsa select nome+ fone+ estado from subdivisao "here estado in AK8oK+ K$oKB d Quais as sa%das reali2adas no per%odo de JR/JS/>@ a JQ/JS/>@a select codproduto+ 6uantidade+ datamov from movimentacaoproduto "here data,ov bet"een KJS/JR/>@K and KJS/JQ/>@K d Quais as pessoas 6ue contm as letras KcrisK no meio Aou no in%cio ou no fimBa select nome from pessoa "here nome li9e KicrisiK d Quais as cidades onde a empresa possu% clientes+ idependente se se:a pessoa ou subdivisoa select cidade from pessoa union select cidade from subdivisao

178

Apostila Microsoft SQL Server 7.0

Inserindo Lin5as
'#S;0$ '#$O =essoa Y7L.;S AQJJ+ K=;SSO7 .,K+ K,K+ KPPP-PPPPK+ KK+ K0. $esteK+ KF. -OS L',O;'0OSK+ K8oiZniaK+ K8OK+ KGQJ>J-RPOK+ KPPPPPPP-PRK+ KJG/PP/R>>@K+ KObs. #enhumaKB '#S;0$ '#$O =essoaACod=essoa+#ome+Se4oB Y7L.;S AQJR+K=essoaQJRK+KTKB

N Insert com select


=ara testar iremos criar a tabela copiaempresa com a mesma estrutura da tabela empresa C0;7$; $7FL; Copia;mpresa A Cod;mpresa int #O$ #.LL+ #ome varchar ASJB #.LL+ 0a2aoSocial varchar ASJB #.LL+ -- campos adicionais -ataCadastro datetime #.LL -;T7.L$ AgetdateABB+ #otas te4t #.LL B

%o'iar as em'resas cu:o nome se:a maior ,ue VMV


insert into copiaempresa select d from empresa "here nome b KmK

7ara incluir os dados numa tabela com a estrutura di+erente +aa@ %riar a tabela co'ia'essoa
C0;7$; $7FL; Copia=essoa A Cod=essoa #ome Se4o Tone B int #O$ #.LL+

varchar A?JB #.LL+ charARB #O$ #.LL CH;CI ASe4o in AK,K+KTKBB+ $$elefone #.LL

179

Apostila Microsoft SQL Server 7.0

%o'iar as 'essoa cu:o se(o X VFV


insert into Copia=essoa select codpessoa+ nome+ se4o+ fone from pessoa "here se4o k KTK

$tuali8ando dados
N $lterar o estado das 'essoas 'ara VGoV ; ,uando a cidade +or igual a VGoiYniaV
update =essoa set ;stado k K8oK "here Cidade k K8oiZniaK

3'date com select


7tuali2ar o total de vendas e compras 6uando seu valor for null. ,as no e4iste nenhum registro cadastrado na tabela movacumulado+ portanto+ iremos incluir todos os produtos nesta tabela para depois fa2er as altera 1es.
drop table movacumulado go C0;7$; $7FL; ,ov7cumulado A Cod=roduto int #O$ #.LL + $otalYendas $Quantidade #.LL + $otalCompras $Quantidade #.LL B go insert movacumuladoAcodprodutoB select codproduto from produto go select d from movacumulado .=-7$; ,ov7cumulado S;$ $otalYendas k Aselect sumAQuantidadeB from ,ovimentacao=roduto mp "here mp.Cod=roduto k ,ov7cumulado.Cod=roduto and mp.$ipo,ov k KSKB+ $otalCompras k Aselect sumAQuantidadeB from ,ovimentacao=roduto mp "here mp.Cod=roduto k ,ov7cumulado.Cod=roduto and mp.$ipo,ov k K;KB "here $otalYendas is null or $otalCompras is null

180

Apostila Microsoft SQL Server 7.0 select d from movacumulado

4(cluindo dados
N 4(cluir todos os registros da tabela co'ia'essoa
delete from copiapessoa

N 4(cluir os registros da tabela co'iaem'resa ; ,uando o c9digo da em'resa +or igual a E


delete from copiaempresa "here codempresa k O

4(cluso usando subconsulta


4(cluir as lin5as da tabela co'iaem'resa ,ue e(iste na tabela em'resa
-elete from copiaempresa "here codempresa in Aselect codempresa from empresaB

Coloca dados na tabela de funcion/rios


drop table funcionario go create table funcionario A codigo int identitL+ nome charASJB+ tipo charARB+ salario moneL B go insert into funcionario valuesAKfuncRK+ K$K+ OJJB go insert into funcionario valuesAKfuncPK+ K=K+ OJJB go insert into funcionario valuesAKfuncOK+ K=K+ RJJJB go insert into funcionario valuesAKfuncQK+ K$K+ QJJB go insert into funcionario valuesAKfunc?K+ K$K+ RPJJB go

181

Apostila Microsoft SQL Server 7.0 insert into funcionario valuesAKfuncSK+ K=K+ ROJJB go insert into funcionario valuesAKfuncGK+ K=K+ PJJB go insert into funcionario valuesAKfunc@K+ K=K+ SJJB go insert into funcionario valuesAKfunc>K+ K=K+ GJJB go insert into funcionario valuesAKfuncRJK+ K$K+ @JJB

Dados de &esumo
N Quantas 'essoas esto cadastradas na tabela de 'essoasS
Select countAdB from =essoa

N Quantas 'essoas e(iste 'or categoriaS


select CodCategoria KC5digo CategoriaK+ CountAdB KQuantidade =essoaK from 0el=essoaCategoria group bL CodCategoria

N &elao de 'rodutos da em'resa com sua ,uantidade total vendida e ordenado 'ela ,uantidade1
select Cod=roduto+ S.,AQuantidadeB from ,ovimentacao=roduto "here $ipo,ov k KSK and -ata,ov bet"een KG/S/>@K and KG/G/>@K group bL Cod=roduto order bL S.,AQuantidadeB -;SC

Tun 1es 7gregadas


select ma4A6uantidadeB K,aior QuantidadeK+ minA6uantidadeB K,enor QuantidadeK+ countA6uantidadeB KQuantidade $otalK+ avgA6uantidadeB K,diaK+ sumA6uantidadeB K$otalK from movimentacao=roduto

N Qual a Fltima venda reali8ada 'ara cada c9digo do 'rodutoS


Select codproduto+ ma4AdatamovB from movimentacaoproduto "here tipomov k KSK 8roup bL codproduto

182

Apostila Microsoft SQL Server 7.0

N Qual a menor ,uantidade vendida 'or cada c9digo do 'rodutoS


Select codproduto+ minA6uantidadeB from movimentacaoproduto !here tipomovimentacao k KSK 8roup bL codproduto

N Qual a ,uantidade total de vendas reali8adas 'ara cada c9digo do 'rodutoS


Select codproduto+ sumA6uantidadeB from movimentacaoproduto !here tipomov k KSK 8roup bL codproduto

-aving
N Qual a menor sa6da reali8ada 'ara cada c9digo do 'roduto ,uando a ,uantidade vendida +or maior ,ue L1S
Select codproduto+ minA6uantidadeB from movimentacaoproduto !here tipomov k KSK 8roup bL codproduto Having sumA6uantidadeB b ?R

Mun 1es de $abelas N Quais os 'rodutos ,ue +oram vendidos na em'resaS


Select distinct p.nome from movimentacaoproduto m + produto p "here m.codproduto k p.codproduto and m.tipo,ov k KSK

N Quais as 'essoas ,ue 'ertencem a categoria V%L %lientesV; mostrando as 'essoas em ordem al+abWticaS

Select p.nome from =essoa p+ 0el=essoaCategoria r+ CategoriaContato c "here p.codpessoa k r.codpessoa and c.codcategoria k r.codcategoria and c.nome k KCL ClientesK order bL p.nome

Iuno usando Inner Ioin

183

Apostila Microsoft SQL Server 7.0

N Quais as subdivis/es e(istente 'ara cada em'resaS

select e.#ome+ s.#ome from ;mpresa e inner :oin Subdivisao s on e.cod;mpresa k s.cod;mpresa order bL e.nome+ s.nome

Iuno cru8ada ou irrestrita


select e.#ome+ s.#ome from ;mpresa e cross :oin Subdivisao s order bL e.nome+ s.nome

Iuno e(terior

Select d from produto left :oin movimentacaoproduto On produto.codproduto k movimentacao.codproduto

Iuno com mais de duas tabelas


N Quais as em'resas ,ue 'ertencem a categoria V%L %lientesV; mostrando as em'resas em ordem al+abWticaS

select e.nome from 0el;mpresaCategoria r inner :oin ;mpresa e on r.codempresa k e.codempresa inner :oin CategoriaContato c on r.codcategoria k c.codcategoria "here c.nome k KCL ClientesK order bL e.nome

N &elao das em'resas e subdivis/es com os nomes dos +uncion<riosS


select e.nome K;mpresaK+ p.nome KTuncion/riosK from 0elSubdivisao=essoa r inner :oin =essoa = on r.codpessoa k p.codpessoa inner :oin subdivisao s on Ar.codsubdivisao k s.codsubdivisao and r.codempresa k s.codempresaB inner :oin ;mpresa ; on S.cod;mpresa k ;.cod;mpresa order bL ;.nome + =.nome

N Listagem das em'resas com nome; +a(; bairro; cidade ;estado e ,ue 'ertencem a categoria igual a *S
select s.#ome+Ta4+Fairro+Cidade+;stado

184

Apostila Microsoft SQL Server 7.0 from Subdivisao s inner :oin ;mpresa e on s.Cod;mpresa k e.Cod;mpresa inner :oin 0el;mpresaCategoria r on r.Cod;mpresa k e.Cod;mpresa "here r.CodCategoria k P order bL ;stado+ Cidade+ Fairro+ s.#ome

Sub-%onsultas
N 7orcentagem da ,uantidade de um 'roduto em relao ao total de ,uantidades dos 'rodutos; ,ue +oram com'rados 'elo em'resaS select Cod=roduto+ RJJ.J d sumAQuantidadeB / Aselect sumAQuantidadeB from ,ovimentacao=roduto "here $ipo,ov k K;KB as =orcentagem from ,ovimentacao=roduto "here $ipo,ov k K;K group bL Cod=roduto Select #ome+ Aselect sumAQuantidadeB from ,ovimentacao=roduto m "here $ipo,ov k KSK and m.Cod=roduto k p.Cod=rodutoB as $otalYendas+ Aselect sumAQuantidadeB from ,ovimentacao=roduto m "here $ipo,ov k K;K and m.Cod=roduto k p.Cod=rodutoB as $otalCompras from =roduto p order bL nome 7ara as 'r9(imas consultas iremos criar a tabela de +uncion<rio; 'ara isso e(ecutar os seguintes comandos@ create table funcionario A codigo int identitL+ nome charASJB+ tipo charARB+ salario moneL B 4(ecutar o scri't %oloca dados na tabela de +uncion<rios 'ara acrescentar dados na tabela de +uncion<rios1 $ coluna ti'o se +or 7 indica 'ro+essor e se +or ? indica tWcnico1

?este de e(istCncia
N Mostrar os 'ro+essores somente se tiver tWcnicos com o sal<rio igual a 1*221

Select nome + salario Trom funcionario !here funcionario.tipo k K=K and ;4ists Aselect d from funcionario "here tipo k K$K and salario k RPJJB

N Quais as em'resas ,ue no tem 'essoas cadastradas nelaS

Select Cod;mpresa+CodSubdivisao+#ome from Subdivisao s "here #O$ ;<'S$S Aselect d from 0elSubdivisao=essoa rsp "here rsp.Cod;mpresa k s.Cod;mpresa and rsp.CodSubdivisao k s.CodsubdivisaoB

185

Apostila Microsoft SQL Server 7.0

N Qual a data da Fltima venda de cada 'roduto com suas res'ectivas ,uantidadesS

select codproduto+ ma4AdatamovB+ Aselect 6uantidade from movimentacaoproduto p "here p.codproduto k mp.codproduto and p.datamov k ma4Amp.datamovBB from movimentacaoproduto mp "here tipomov k KSK group bL codproduto

N &elao das em'resas e subdivis/es com a ,uantidade de +uncion<rios 'ertencente a cada em'resaS

select e.nome K;mpresaK+ countAdB from 0elSubdivisao=essoa r inner :oin =essoa = on r.codpessoa k p.codpessoa inner :oin subdivisao s on Ar.codsubdivisao k s.codsubdivisao and inner :oin ;mpresa ; on S.cod;mpresa k ;.cod;mpresa group bL e.nome

r.codempresa k s.codempresaB

fndices "Kndices clustered geralmente W utili8ado ,uando no W +eito muita incluso de dados na tabela1#
C0;7$; .#'Q.; CL.S$;0;- '#-;< ind#ome O# CategoriaContatoAnomeB C0;7$; CL.S$;0;- '#-;< ind#ome O# ;mpresaAnomeB C0;7$; '#-;< ind#ome O# =essoaAnomeB

IdentitA
Create table -epartamento A Codigo int not null identitL+ #ome varcharASJB B

De+ault
create default

186

Apostila Microsoft SQL Server 7.0 -ata7tual as getdateAB go spDbindefault -ata7tual+ Kempresa.datacadastroK e4ec spDbindefault -ata7tual+ Ksubdivisao.datacadastroK 7lter table Subdivisao add default K8OK for ;stado 7lter table =essoa add default K8OK for ;stado

&egras
create rule 0egraSe4o as Use4o in AKTK+ K,KB go spDbindrule 0egraSe4o+ Kpessoa.se4oK 7L$;0 $7FL; ,ovimentacao=roduto add chec9 AU$ipo,ov in AK;K+ KSKBB

&estri/es
/dddddd Ob:ect& $able CategoriaContato dddddd/ 7L$;0 $7FL; CategoriaContato 7-- =0',70^ I;^ #O#CL.S$;0;- ACodCategoriaB /dddddd Ob:ect& $able Contato dddddd/ 7L$;0 $7FL; Contato 7-- CO#S$07'#$ =9Contato =0',70^ I;^ CL.S$;0;- A$ipo+ Codigo+ CodigoSubB /dddddd Ob:ect& $able ;mpresa dddddd/ 7L$;0 $7FL; ;mpresa 7-- CO#S$07'#$ =9;mpresa =0',70^ I;^ #O#CL.S$;0;- ACod;mpresaB /dddddd Ob:ect& $able =roduto dddddd/ 7L$;0 $7FL; =roduto 7-- CO#S$07'#$ =9=roduto =0',70^ I;^ #O#CL.S$;0;- ACod=rodutoB /dddddd Ob:ect& $able ,ovimentacao=roduto dddddd/ 7L$;0 $7FL; ,ovimentacao=roduto 7-- =0',70^ I;^ #O#CL.S$;0;- ACod,ov=rodutoB+ TO0;'8# I;^ ACod=rodutoB 0;T;0;#C;S =rodutoACod=rodutoB+ TO0;'8# I;^ A$ipoContato+ CodContato+ CodSubContatoB 0;T;0;#C;S ContatoA$ipo+Codigo+CodigoSubB /dddddd Ob:ect& $able =essoa dddddd/ 7L$;0 $7FL; =essoa 7-- =0',70^ I;^ #O#CL.S$;0;- ACod=essoaB /dddddd Ob:ect& $able Subdivisao dddddd/ 7L$;0 $7FL; Subdivisao 7-- =0',70^ I;^ #O#CL.S$;0;- ACod;mpresa+ CodSubdivisaoB /dddddd Ob:ect& $able 0el;mpresaCategoria dddddd/ 7L$;0 $7FL; 0el;mpresaCategoria 7-- CO#S$07'#$ =90el;mpresaCategoria =0',70^ I;^ #O#CL.S$;0;- ACod;mpresa+CodCategoriaB+ CO#S$07'#$ T9Cod;mpresaCategoria TO0;'8# I;^ ACodCategoriaB 0;T;0;#C;S

187

Apostila Microsoft SQL Server 7.0 CategoriaContatoACodCategoriaB /dddddd Ob:ect& $able 0el=essoaCategoria dddddd/ 7L$;0 $7FL; 0el=essoaCategoria 7-- =0',70^ I;^ ACod=essoa+ CodCategoriaB+ CO#S$07'#$ T9Cod=essoaCategoria TO0;'8# I;^ ACodCategoriaB 0;T;0;#C;S CategoriaContatoACodCategoriaB /dddddd Ob:ect& $able 0elSubdivisao=essoa dddddd/ 7L$;0 $7FL; 0elSubdivisao=essoa 7-- =0',70^ I;^ ACod;mpresa+CodSubdivisao+Cod=essoaB+ TO0;'8# I;^ ACod;mpresa+CodSubdivisaoB 0;T;0;#C;S Subdivisao+ TO0;'8# I;^ ACod=essoaB 0;T;0;#C;S =essoa

N %riar estas tabelas ,ue utili8a as restri/es de integridade com o comando create1
C0;7$; $7FL; copia=essoa A Cod=essoa int #O$ #.LL constraint =ID=essoa primarL 9eL+ #ome varchar A?JB #.LL constraint .D#ome=essoa .ni6ue+ Tone $$elefone #.LL + Ta4 $$elefone #.LL + Se4o char ARB chec9 Ase4o inAKTK+K,KBB+ 0ua varchar ASJB #.LL + -ataCadastro datetime default getdateAB + Cidade varchar AOJB default K8oiZniaK + Fairro varchar AOJB #.LL + C;= $C;= #.LL + ;stado $;stado #.LL + C=T varchar ARQB #.LL + #otas te4t #.LL B C0;7$; $7FL; Copia0el=essoaCategoria A Cod=essoa int #O$ #.LL constraint TIDCopia=essoa foreign 9eL references copiapessoa+ CodCategoria int #O$ #.LL primarL 9eL Acodpessoa+ codcategoriaB B

Vis/es
C0;7$; Y';! ;mpresaCategoria ACod;mpresa+ ;mpresa+ CategoriaB 7S select e.Cod;mpresa+ e.#ome+ c.#ome from ;mpresa e '##;0 MO'# 0el;mpresaCategoria rec O# e.Cod;mpresa k rec.Cod;mpresa '##;0 MO'# CategoriaContato c O# rec.CodCategoria k c.CodCategoria C0;7$; Y';! =roduto0estrito 7S S;L;C$ Cod=roduto+ #ome+ Locali2acao T0O, =roduto

188

Apostila Microsoft SQL Server 7.0 C0;7$; Y';! =essoas;mpresa as select p.#ome K=essoaK+ e.nome K;mpresaK+ s.nome KSubdivisaoK+ rs.cargo from =essoa p inner :oin 0elSubdivisao=essoa rs on p.Cod=essoa k rs.Cod=essoa inner :oin Subdivisao s on Ars.Cod;mpresa k s.Cod;mpresa and rs.CodSubdivisao k s.CodSubdivisaoB inner :oin ;mpresa e on As.codempresa k e.codempresaB C0;7$; Y';! =essoaYie" 7S S;L;C$ #ome+ Cidade+ ;stado T0O, =essoa !H;0; #ome li9e K7iK C0;7$; Y';! Saidas 7S S;L;C$ -ata,ov+ Cod=roduto+ Quantidade+ $ipo,ov T0O, ,ovimentacao=roduto !H;0; $ipo,ov k KSK !'$H CH;CI O=$'O#

7rocedimentos
C0;7$; =0OC;-.0; Fusca=essoa Unome varcharA?JB 7S declare Upes6uisa varcharA?JB declare Ucontagem int select Upes6uisa k KiK e Unome e KiK select Ucontagem k countAdB from =essoa "here #ome li9e Upes6uisa declare Umensagem varcharARJJB 'T Ucontagem `k J begin select Umensagem k convertAvarchar+UcontagemB e K pessoas encontradasK print Umensagem select Cod=essoa+ #ome from =essoa "here #ome L'I; Upes6uisa order bL #ome end ;LS; begin select Umensagem k K#o foi encontrado CKeUnomeeKCK print Umensagem end 8O

189

Apostila Microsoft SQL Server 7.0 /dddddddddddddd/ create procedure Fusca=essoaCategoria Unome varcharA?JB+ UcodCategoria int k J 7S if UcodCategoria k J begin select d from =essoa "here #ome li9e KiKeUnomeeKiK return R end else begin select d from =essoa "here #ome li9e KiKeUnomeeKiK and Cod=essoa in Aselect Cod=essoa from 0el=essoaCategoria "here CodCategoria k UcodCategoriaB return P end 8O /dddddddddddddd/ create procedure ConsultaYendas=roduto Ucod=roduto int+ Udata'ni datetime+ UdataTim datetime as select Quantidade+-ata,ov+ $ipoContato+CodContato+CodSubContato from ,ovimentacao=roduto "here Cod=roduto k Ucod=roduto and $ipo,ov k KSK and -ata,ov bet"een Udata'ni and UdataTim order bL -ata,ov /dddddddddddddd/ create procedure 'niciali2arContato as delete from Contato insert into Contato select K=K+ Cod=essoa+ J+ #ome from =essoa insert into Contato select KSK+ Cod;mpresa+ CodSubdivisao+ #ome from Subdivisao 8O /dddddddddddddd/ create procedure 7tuali2arYendasCompras

190

Apostila Microsoft SQL Server 7.0 as delete from ,ov7cumulado insert into ,ov7cumuladoACod=roduto+$otalYendas+$otalComprasB select Cod=roduto+ =recodAselect sumAQuantidadeB from ,ovimentacao=roduto m "here m.$ipo,ov k KSK and m.Cod=roduto k p.Cod=rodutoB+ =recodAselect sumAQuantidadeB from ,ovimentacao=roduto m "here m.$ipo,ov k K;K and m.Cod=roduto k p.Cod=rodutoB from =roduto p 8O /dddddddddddddd/ C0;7$; =0OC;-.0; 'ncrementa=roduto Ucod=roduto int+ UQuant7dicionada $Quantidade 7S update produto set 6uantdisponivel k 6uantdisponivel e U6uant7dicionada "here codproduto k Ucodproduto if UU;rror `k J return UU;rror else return J 8O /dddddddddddddd/ C0;7$; =0OC;-.0; -ecrementar=roduto UCod=roduto int+ UQuant0etirada $Quantidade 7S if Aselect 6uantdisponivel from produto "here codproduto k UcodprodutoB n UQuant0etirada begin 0ais;rrorAKQuantidade 'nsuficiente`K+ RS+ RB return R end update produto set 6uantdisponivel k 6uantdisponivel U6uantretirada "here codproduto k Ucodproduto if UU;rror `k J return UU;rror else return J 8O

191

Apostila Microsoft SQL Server 7.0

3sar o 'rocedimento Documentador ; 'or,ue ele utili8a cursor e W um e(em'lo de como utili8ar tabelas de sistemas1
create procedure -ocumentador Utabela varcharA?JB k #.LL as if Utabela 'S #.LL declare SOFM cursor for //declarando cursor com nome SOFM select id+name from sLsob:ects "here tLpe k K.K order bL name else declare SOFM cursor for select id+name from sLsob:ects "here name k Utabela declare Uid int+ Unome$abela varcharA?JB declare Umsg varcharARJJB // -epois de criado tenho 6ue abrir o cursor + ap5s a abertura ele fica posicionado no in%cio. open SOFM fetch ne4t from SOFM into Uid+ Unome$abela // busca o pr54imo registro e guarda esses valores nas vari/veis id+ nometabela+ para percorrer a tabela tem 6ue colocar num la o. "hile UUfetchDstatus `k -R begin select Umsg k Kddddd $abela& K e Unome$abela print Umsg select sc.colid #um+ sc.name Coluna+ convertAvarcharAPJB+ case "hen st.name in ACcharC+ CvarcharC+ CbinarLCB then st.name e CAC e convertAvarchar+sc.lengthBeCBC "hen st.name in ACnumericC+ CdecimalCB then st.name e CAC e convertAvarchar+sc.precB e C+C e convertAvarchar+sc.scaleB e CBC else st.name endB $ipo+ case "hen sc.status u J4J@ k J then C#O$ #.LL C else C#.LL C end e case "hen sc.status u J4@J `k J then C'-;#$'$^C else null end Op 1es+ sc.length K$am.bLtesK+ sc.cdefault+ sc.domain from sLscolumns sc L;T$ MO'# sLstLpes st O# sc.usertLpe k st.usertLpe "here sc.id k Uid fetch ne4t from SOFM into Uid+ Unome$abela end close SOFM deallocate SOFM // destroi o cursor do banco de dados 8O

Modelo de e(em'lo
76ui voc3 tem a descri o de uma solu o de banco de dados para uma empresa fict%cia. Com base na realidade da empresa+ dedu2em-se os re6uisitos de sistema. Ta2-se ento o modelo de dados para o sistema. 192

Apostila Microsoft SQL Server 7.0

&e,uisitos do Sistema
%ontatos
.ma empresa precisa manter os dados dos seus CcontatosC+ ou se:a+ das v/rias pessoas e empresas 6ue se relacionam com ela+ se:am eles clientes+ fornecedores+ distribuidores etc. =ara cada empresa cadastrada+ preciso manter seu nome e ra2o social. Cada empresa tem uma ou mais subdivis1es. .ma subdiviso representa uma filial ou departamento da empresa+ 6ue pode ter uma locali2a o f%sica separada. .ma empresa no pode ser cadastrada sem nenhuma subdiviso. Cada subdiviso pode ter um endere o+ 6ue dividido em rua/n)mero+ bairro+ cidade+ estado e C;=. 7lm disso+ uma subdiviso tem um telefone+ opcionalmente um fa4 e opcionalmente um C8C. =ara cada pessoa+ preciso manter seu nome e se4o+ alm dos dados de endere o como na subdiviso. .ma pessoa pode ter+ opcionalmente+ um telefone+ um fa4 e o seu n)mero de C=T. .ma subdiviso pode ter pessoas 6ue trabalham nela+ sendo necess/rio saber o cargo da pessoa. .ma mesma pessoa pode estar empregada em diferentes subdivis1es+ at mesmo de diferentes empresas. 7s pessoas e empresas so classificadas em categorias+ para maior organi2a o. Cada pessoa ou empresa pode pertencer a mais de uma categoria ou a nenhuma categoria. 7o cadastrar 6ual6uer empresa+ subdiviso ou pessoa+ preciso guardar a sua data de cadastramento e um te4to opcional contendo informa 1es adicionais. Tre6gentemente+ os usu/rios precisam emitir um relat5rio das empresas e pessoas de uma determinada categoria+ em ordem alfabtica. 7 empresa envia mensalmente um informativo para todos os seus clientes Ase:am pessoas f%sicas ou empresasB. O informativo emitido via fa4+ apenas para a6uelas pessoas ou empresas 6ue esto na categoria CClientesC e possuem n)mero de fa4. 7 lista de clientes deve ser ordenada por estado+ depois por cidade e depois por bairro. .m srio problema do sistema anterior 6ue durante a consulta para essa mala direta Aem hor/rio de trabalhoB+ todo o processamento ficava mais lento.

7rodutos
7 empresa mantm um controle dos produtos 6ue ela comerciali2a. =ara cada produto so mantidos um nome informal+ uma descri o mais detalhada+ a locali2a o no esto6ue+ a 6uantidade dispon%vel em esto6ue e a 6uantidade m%nima em esto6ue. Cada entrada ou sa%da de produto deve ser registrada. =ara uma entrada+ necess/rio saber 6ual o contato Aempresa ou subdivisoB 6ue forneceu o produto. 'gualmente+ para uma sa%da+ preciso saber 6ual o contato para o 6ual o produto foi vendido. $anto para entradas como sa%das+ preciso registrar a 6uantidade do produto e a data em 6ue foi feita essa movimenta o. O sistema anterior da empresa+ 6ue usava ar6uivos -FT+ tinha um cadastro de produtos. N importante 6ue esse cadastro de produtos se:a reaproveitado. Os programadores conseguiram e4port/-lo para um ar6uivo te4to+ separado por tabula 1es. #o entanto+ alguns campos so diferentes do novo sistema. 7 ger3ncia precisa dos seguintes relat5rios& Quais as vendas de cada 'roduto em determinado 'er6odoS Quais as vendas e com'ras de cada 'roduto num determinado 'er6odoS 7or e(em'lo@

=roduto $otal vendas $otal compras =rimeiro =roduto RPJ.J?J+OJ OJ.Q?S+JJ Segundo =roduto O.Q?G+RJ P.JJJ+@G ... ... ... 193

Apostila Microsoft SQL Server 7.0

Qual a )ltima venda de cada produtoa

Modelos de dados

76ui voc3 ver/ os modelos de dados para solu o do problema de dados da empresa fict%cia+ usada como e4emplo no decorrer do curso. =artimos do pressuposto 6ue voc3 familiari2ado com modelos relacionais+ entidades+ atributos e coisas do tipo. O modelo foi dividido em duas partes+ pois a segunda Arelacionamentos entre produto e contatoB no se relaciona com a primeira.

194

Apostila Microsoft SQL Server 7.0

195

Apostila Microsoft SQL Server 7.0

37G&$D4 do SQL Server O1( 'ara a verso 012


7ntes de fa2er o .pgrade do SQL Server S.4 para a verso G.J+ deve-se seguir estes passos& ;4ecutar os seguintes comandos -FCC em todos os bancos de dados e4istentes& CH;CI-F+ #;!7LLOC+ CH;CIC7$7LO8. Confirmar 6ue o parZmetro de configura o do SQL Server+ bancos de dados abertos+ maior ou igual ao n)mero de bancos de dados no servidor Ainclusive master+ tempdb+ model...B Ta2er c5pias de seguran a de todos os bancos de dados+ inclusive o master. Se poss%vel+ usar a ferramenta de bac9up do !indo"s #$+ pra fa2er bac9up de todas as pastas do SQL Server. Ta2er bac9up do registro do #$. -esligar bancos de dados 6ue se:am somente leitura Aread-onlLB. Qual6uer banco de dados 6ue tenha a proprieade read-onlL em $0.;+ pass/-la para T7LS;. Com o comando CHI.=8+ voc3 descobre 6uais os bancos de dados em modo de somente leitura. Techar 6ual6uer aplica o de SQLServer+ e assegurar-se 6ue ningum est/ usando o SQLServer Ta2er o upgrade` >ota@ =ara atuali2ar de vers1es do SQl Server anteriores ] S.4+ primeiro deve-se fa2er o upgrade para S.4+ para s5 ento atuali2ar para a verso G.J. ;4istem diversos cen/rios poss%veis para o upgrade. O primeiro cen/rio 6uando se est/ fa2endo a atuali2a o de uma instala o e4istente de SQL Server S.4 para G.J na mesma m/6uina. 7%+ o SQL Server G.J vai ser instalado na m/6uina em con:unto com o S.4. 7s duas vers1es no podem rodar simultanamente+ mas podemos facilmente alternar entre os dois. 7%+ usa-se o CSQL Server G.J Yersion .pgrade !i2ardC para e4portar os bancos de dados da versao S.4 para o disco+ fita ou drives de rede e ento importa-se tais bancos de dados para o SQL Server G.J. O outro cen/rio 6uando voc3 disp1e de dois computadores. Como no se est/ instalando o SQL Server G.J na mesma m/6uina 6ue est/ instalado o SQL Server S.4+ tudo se torna mais f/cil. =ode-se migrar todos os seus bancos de dados de uma ve2 ou alguns de cada ve2. Yoc3 e seus usu/rios vo poder acessar o servidor G.J e o S.4 depois do processo de atuali2a o por6ue os mesmos esto rm computadores diferentes Alogo+ podem rodar simultaneamente+ se dese:adoB.

In+orma/es gerais sobre o $ssistente de $tuali8ao de Verso "Version 3'grade Di8ard#


Se voc3 tem dois computadores+ como dito acima+ voc3 pode acessar os bancos de dados da verso S.? e da G.J depois 6ue o processo de instala o tiver terminado. Quando se fi2er a atuali2a o em uma )nica m/6uina+ o estado do seu SQL Server S.?+ depois 6ue o 7ssistente de 7tuali2a o de Yerso tiver terminado+ depende do mtodo escolhido para transferir os bancos de dados. Se voc3 tiver espa o em disco suficiente no seu servidor para instalar o SQL Server G.J sem remover os dispositivos de dados AdevicesB do SQL Server S.4+ voc3 pode usar o mtodo -irect =ipeline para transferir os dados. 7 abordagem -irect =ipeline a melhor escolha a ser feita 6uando se fa2 uma atuali2a o. Com esse mtodo+ ocorre a transfer3ncia em mem5ria dos dados e ob:etos do SQL Server S.4 para o SQL Server G.J+ dei4ando o SQL Server S.4 intacto. Com esse mtodo+ tambm se verifica a melhor performance no processo de atauli2a o. ,as+ se voc3 no tiver espa o em disco para fa2er a atuali2a o sem remover seus bancos de dados do SQL Server S.4 primeiro+ voc3 ter/ 6ue e4portar os dados e ob:etos do SQL Server S.4 para uma fita ou drive de rede. 7 op o do drive de fita a melhor+ mas se no se dispuser de tal recurso+ use a op o da unidade de rede.

$lternando entre o SQL Server O1L e o SQL Server 012


O SQL Server S.? e o SQL Server G.J no podem rodar simultanteamente na mesma m/6uina. Quando voc3 instala o SQL Server G.J em uma m/6uina 6ue :/ tem o SQL Server S.?+ criado um item no menu 'niciar+ =rogramas+ ,icrosoft SQL Server - S"itch. Se voc3 estiver com o SQL Server G.J ativo+ h/ um %cone 196

Apostila Microsoft SQL Server 7.0

,icrosoft SQL Server S.?; caso voc3 este:a com o SQL Server S.? ativo+ o %cone ,icrosoft SQL Server G.J. 7o clicar nesse %cone+ aparece uma cai4a de di/logo avisando 6ue o SQL Server est/ restaurando as informa 1es do SQL Server S.? Aou G.JB. ;nto voc3 alterna entre um e outro SQL Server com facilidade. ;sse s"itch cuida de parar e iniciar os servi os necess/rios para 6ue cada uma das vers1es do SQL Server possa rodar.

$sssistente de $tuali8ao de Verso


,esmo 6ue no se tenha o SQL Server S.? instalado+ se durante a instala o for selecionada a op o .pgrade $ools+ vai ser instalado o 7ssistente de atuali2a o de verso. O .pgrade !i2ard+ 6uando se usa o mtodo direct =ipeline+ oferece alguma prote o contra falhas Aou se:a+ se deu problema+ d/ pra desfa2erB. ,as mesmo assim+ recomend/vel seguir os passos descritos no in%cio do cap%tulo+ e para enfati2ar+ no dei4e de& 0eali2ar bac9ups dos bancos de dados; Ta2er bac9ups dos ar6uivos do SQL Server+ dispositivos AdevicesB e diret5rios; Ta2er bac9up do o registro do #$; $er espa o suficiente no disco pra atuali2a o. 7:ustar o $emp-F para P?,F ou mais. -epois 6ue voc3 tiver certe2a 6ue fe2 tudo isso+ podemos come ar`

Iniciando o $sistente de $tuali8ao de Verso

197

Apostila Microsoft SQL Server 7.0

-o ,enu 'niciar+ selecione ,icrosoft SQL Server S"itch e ento selecione SQL Server .pgrade !i2ard+ como na figura abai4o& & 7parece a cai4a de di/logo SQL Server .pgrade !i2ard+ como mostrado abai4o&

198

Apostila Microsoft SQL Server 7.0

;ssa apenas uma tela de boas vindas. Cli6ue em #e4t para continuar.

Selecione a o'o de trans+erCncia dos ob:etos1


7parece a cai4a de di/logo de $ransfer3ncia de dados e ob:etos.

#esta cai4a de di/logo+ voc3 pode determinar o 6ue voc3 6uer e4portar do SQL Server S.? e o 6ue voc3 6uer importar para o SQL Server G.J. Os valores padro so para e4portar e importar dados e ob:etos+ usar =ipes #omeados A#amed =ipesB para a transfer3nca de dados Aesse o -irect =ipelineB. =ode-se mudar 6uais6uer das sele 1es padro. Se a op o #amed =ipe estiver selecionada Aa op o $ape s5 selecion/vel 6uando se tem uma unidade de fita no computadorB+ no se pode desmarcar as cai4as C;4port from S.4 ServerC nem a 199

Apostila Microsoft SQL Server 7.0

C'mport into G.J ServerC+ pois o mtodo de =ipeline direto A#amed =ipeB fa2 a e4porta o e importa o simultZnea. 7 op o de Yerifica o+ permite 6ue se valide os dados depois da transfer3ncia AYalidate successful ob:ect data transferB. Quando esta op o selecionada+ pode-se pedir 6ue se:a feita uma verifica o de C0C A6uase bLte a bLteB nos dados Amarcando a op o ;4haustive data integritL verificationB. Quando ela selecionada+ aparece uma cai4a de di/logo avisando 6ue esta op o pode dobrar o tempo necess/rio para a atuali2a o. 7bai4o esto os passos e4ecutados pelo 7ssistente de 7tuali2a o de Yerso 6uando se escolhe um dos dois mtodos Aunidade de fita ou =ipe #omeadoB. 3nidade de +ita R. ;4porta os ob:etos S.4 P. Techa o SQL Server S.4 O. ;4prta os dados S.4 Q. Ta2 bac9up e copia os dispositivos AdevicesB S.4 ?. 'nicia o SQL Server G.J S. 'mporta os ob:etos do SQL Server S.4 para o SQL Server G.J G. 'mporta os dados do SQL Server S.4 para o SQL Server G.J Direct 7i'eline R. ;4porta os ob:etos S.4 P. Techao SQL Server S.4 O. 'niica o SQL Server G.J Q. 'mporta os ob:etos S.4 ?. ;4porta e importa os dados do SQL Server S.4 para o SQL Server G.J #ota& Quando se seleciona a o mtodo de transfer3ncia com a unidade de fita+ voc3 tem a a op o de copiar os dispositivos do SQL Server S.4 para uma uniadde de rede.

Logon dos servidores


7parece a cai4a de di/logo de logon dos servidores AServers LogonB.

200

Apostila Microsoft SQL Server 7.0

Selecione em Server #ame+ o servidor S.4 de 6uem voc3 6uer e4portar os dados. ;ntre com nome e senha do administrador Aconta CsaCB+ e 6uais6uer op 1es de linha de comando adicionais necess/rias para iniciar o servidor. O mesmo deve ser feito para o servidor G.J 6ue voc3 6uer importar os dados para ele. -igite nome e senha do administrador+ e parZmetros adicionais para iniciar o servidor. Quando se clica em #e4t+ aparece uma cai4a de di/logo di2endo 6ue ser/ parado o SQL Server G.J e iniciado o SQL Server S.? e 6ue ningum pode estar acessando os servidores Ao SQL Server S.? e o G.JB+ e se voc3 tem certe2a 6ue 6uer continuar. Caso voc3 tenha certe2a 6ue no h/ ningum acessando algum dos servidores+ cli6ue em ^es. 7parece ento uma :anela indicando 6ue o SQL Server G.J est/ sendo finali2ado e o SQL Server G.J iniciado.

Seleo de '<gina de c9digo

7 cai4a de di/logo de sele o da p/gina de c5digo te permite escolher a p/gina de c5digo usada pra gerar os ar6uivos de script usados na atuali2a o. 0ecomenda-se a op o padro. Cli6ue em #e4t para continuar.

Selecione os bancos de dados a atuali8ar


7parece a cai4a de di/logo de sele o dos bancos de dados.

201

Apostila Microsoft SQL Server 7.0

Selecione 6uais bancos de dados voc3 6uer atuali2ar colocando-os do lado C'nclude these databasesC. Os 6ue voc3 no 6uer atuali2ar+ dei4e-os do lado C;4clude these databasesC. Caso voc3 decida-se por no atuali2ar todos os bancos de dados+ aparece uma mensagem di2endo 6ue recomend/vel 6ue se atuali2e todos os bancos de dados de uma ve2+ e se voc3 6uer de fato fa2er assim. Caso 6ueira+ cli6ue em ^es. 7p5s selecionados os bancos de dados 6ue se 6uer atuali2ar+ cli6ue em #e4t.

%riao dos bancos de dados


7parece a cai4a de di/logo de cria o dos bancos de dados.

=ara ter seus bancos de dados criados com as op 1es padro+ os ar6uivos de dados locali2ados no diret5rio de dados do SQL Server G+ e um mapeamento um-para-um dos dispositivos AdevicesB do SQL Server S.? para 202

Apostila Microsoft SQL Server 7.0

ar6uivos do SQL Server G.J+ use a configura o padro. =ara mudar ar6uivos ou locais+ cli6ue no boto ;dit. =ara usar bancos de dados :/ criados no G.J+ selecione a op o C.se databases alreadL created in SQL Server G.JC. =ara e4ecutar um script personali2ado para cria o dos bancos de dados+ escolha a op o C.se the follo"ing SQL ScriptC+ e entre com o caminho e o nome do script a ser e4ecutado. -epois 6ue voc3 tiver feito suas escolhas+ cli6ue no boto #e4t.

4stimando o es'ao em disco necess<rio


=ra estimar o espa o necess/rio para uma atuali2a o por pipeline direto ou um atuali2a o sem os bancos de dados do SQL Server+ na :anela mostrada na figura anterior+ seleciona-se a op o ;dit+ depois 7dvanced. 7parece a :anela C=roposed -ataFase LaLoutC.

203

Apostila Microsoft SQL Server 7.0

cli,ue em $dvanced e111 #essa :anela pode-se ver o espa o necess/rio para os bancos de dados G.J e o espa o livre no disco r%gido. =ara ver o espa o livre se for feita a remo o dos bancos de dados S.?+ selecionar COptionsC e CTree Space 'ncludes S.4 filesC. #essa :anela voc3 pode definir outros ar6uivos para colocar os bancos de dados e+ estando satisfeito com o definido cli6ue em 7ccept. 7% volta-se para a tela de cria o dos bancos de dados A-atabase creationB. Cli6ue em #e4t para continuar.

SAstem con+iguration .'tions


7parece a :anela CSLstem Configuration OptionsC.

204

Apostila Microsoft SQL Server 7.0

Os valores pado so para transferir as configura 1es e4istentes de servidor e tambm as configura 1es do SQL ;4ecutivo+ bem como desativar 7#S' #ulls e ativar o modo misto de Quoted 'dentifiers. Selecionar as op 1es dese:adas e cli6ue em C#e4tC.

%on+erindo as sele/es de atuali8ao


Tinalmente+ aparece a :anela para revisar o 6ue foi selecionado.

76ui+ voc3 pode conferir todas suas sele 1es de op 1es de atuali2a o e deve-se a:ustar o 6ue se 6uiser mudar at estar satisfeito com as sele 1es. Tinalmente+ clicar em CTinishC para come ar a atuali2a o.

205

Apostila Microsoft SQL Server 7.0

$tuali8ao 'ara o SQL Server 012 em curso


7% come a a atuali2a o+ aparecendo a :anela CYersion .pgrade StatusC.

;ssa :anela nos d/ informa 1es sobre o andamento do processo de atuali2a o+ como situa o da tarefa+ a tarefa sendo e4ecutada+ e hora de in%cio e trmino de cada uma das tarefas envolvidas na atuali2a ao. #essa :anela+ podemos pausar 6ual6uer tarefa+ Aselecionando =ause $as9B+ pausar entre tarefas Aselecionando =ause Fet"een StepsB+ abortar o processo de atuali2a o ACloseB+ abortar uma tarefa espec%fica ACancel $as9B+ ou concluir uma tarefa pausada. Quando a atuali2a o se completar com sucesso+ aparece um aviso C.pgrade CompleteC.

206