Livro_SQL

665

Click here to load reader

Transcript of Livro_SQL

Page 1: Livro_SQL
Page 2: Livro_SQL

Kit de Treinamento MCTS - Exame 70-432Microsoft SQL Server 2008I mplementação e Manutenção

Page 3: Livro_SQL

O autor

Mike Hotek é vice-presidente da MHS Enterprises, Inc.,empresa norte-americana, e presidente da FilAm Soft-ware Technologr, Inc., companhia filipina. Desenvolve-dor de aplicativos hâ cerca de 30 anos e profissional deMicrosoft SQL Server há quase 20 anos,Hotekjâ ofereceuconsultoria para mais de 1.000 projetos de SQL Server e

desenvolve produtos e soluções para todos os recursosdentro do SQL Server - relacional, ETL, relatórios, OLAPe mineraçáo de dados. Com experiência em mais de 40linguagens de desenvolvimento ou plataformas - que variam desde Cobol, RPG, Fortrane LISP até Powerbuilder, Delphi, .NET e PHP -, Mike é autor ou coautor de oito livros, setedeles sobre SQL Server, além de dezenas de artigos para várias revistas da ârea. Quandonão estâ prestando consultoria sobre projetos de SQL Server, proferindo conferências,dando seminários, criando software ou lecionando, ele pode ser encontrado atrás de umtorno em sua oficina de carpintaria.

nÄq-â,-3ED-C.*îffid

HB12K Hotek, Mike.Kit de treinamenio MCTS (Exame 70-432): Microsoft

SQL Server 2008: implementação e manutenção / Mike Hotek ;

tradução: joão Eduardo Nóbrega Tortello ; revisão técnica:Luiz Felipe Ribeiro Pimenta. - Porto Alegre : Bookman, 2010.

664 p. i 25 cm. + 1 CD-ROM.

rsBN 9 78-85-7 7 80-640-9

1. Sistema de gerenciamento de banco de dados.2.Microsoft SQL Server 2008. 3. Exame 70-432. I. Título.

cDU 004.65

Catalogaçâo na publicação: Renata deSouza Borges CRB-7011922

Page 4: Livro_SQL

Kit de Treinr*.nîä Mcff: Exame 70-4g2

M ¡crosoft SQL Server' 2008I mplementação e Manutenção

Mìke Hotek

M"

Tradução:

foáo Eduardo Nóbrega Tortello

Revisão têcnica:Luiz Felipe Ribeiro Pimenta

MCT MCDBA, MCITP

Page 5: Livro_SQL

obra originalmente publicada sob o título.ltlCTS SelfPaced Trainíng Kit (Exam 70-432):Microso;fr@ SQL Server 2oOB - Implementation and Maíntenance

ISBN 978-0-73 56-2605-8

Copyright @ 2oo9 by Mike Hotek

Publicado conforme acordo com a editora original, Microsoft Press, uma divisão da Microsoft Corporation,

Redmond, Washington, EUA.

Capa: Gustcvo Demarchí, arte sobre capa original

Leitura final: Tíago Cattani

Edito¡a Sênior: Arysinha /acques 'fifonso

Editora Jinior: Elisa Vialí

Projeto e editoraçáo: Techbooks

Microsoft, Microsoft Press, Excel, InteiliSense, Internet Explorer, MSDN, MSN, SharePoint, Silverlight,SQL Server, Visual Studio, Windows e Windows Server são exemplos comerciais notórios ou marcas

comerciais registradas da Microsoft Corporation nos Estados Unidos e/ou em outros países. Outros

nomes de produto e de empresa mencionados aqui podem ser marcas comerciais de seus respectivosproprietários.

Os exemplos de empresas, organizações, produtos, nomes de domínio, endereços de correio eletrônico,

logotipos, pessoas, lugares e eventos retratados aqui sáo flctícios. Nenhuma associaçáo com qualquer

empresa, organização, produto, nome de domínio, endereço de correio eletrônico, logotipo, pessoa, iugarou evento reais foi intencional ou deve ser inferida.

Este livro expressa visões e opiniöes do autor. As informações contidas neste livro sâo fornecidas sem

qualquer garantia legal, expressa ou implícita. Os autores, a Microsoft Corporation, e seus revendedores

ou distribuidores não serão responsáveis por quaisquer danos causados ou alegadamente causados diretaou indiretamente por este 1ivro.

Reservados todos os direitos de publicaçáo, em língua portuguesa, àARTMED@ EDITORA S.A.

(BOOK¡ißN@ COMPANHIA EDiTORA é uma divisáo da ARTMED@ EDITORA S. A.)

Av. Jerônimo de Ornelas, 670 - Santaîa90040-340 - Porto Alegre - RS

Fone: (51) 3027-7000 Fax: (51) 3027-7070

É proibida a duplicação ou reproduçáo deste volume, no todo ou em parte, sob quaisquer

formas ou por quaisquer meios (eletrônico, mecânico, gravação, fotocópia, distribuiçáo na Web

e outros), sem permissão expressa da Editora.

Unidade Sáo PauioAv. Embaixador Macedo de Soares, 10735 - Galp?to 5 - Vila Anastácio05035-000 - Sáo Paulo - SP

Fone: (i1) 3665-1100 Fax: (11) 3667-1333

sAc 0800 703-3444

IMPRESSO NO BRASILPRTNTED IN BRAZIL

Page 6: Livro_SQL

Para Gentlyn,Minha bússola na tempestade,

ifarol que [lumína o camínho de casa.

Page 7: Livro_SQL
Page 8: Livro_SQL

ì:'.: Agra.. -.--ii::.i=;' :. -::: :

_:, :=1,,, ;,--r. | -:'' l- r :-, -: :'

= :---= a t'-- : -a '-.:--

d

Agradeço a todos os meus leitores nos últimos dez anos - é di(tcil acreditar que este éo sétimo livro sobre SQL Server que escrevo e isso náo seria possível sem vocês. Obri-gado à minha equipe editorial na Microsoft Press, Denise Bankaitis e Laura Sacker-man. Agradeço especialmente a Ken Jones, que jâ trabalhou em cinco livros comigoe é um profissional valioso paÍa a Microsoft Press. Agradeço a Rozanne Whalen, que

iá. estâ na terceira ediçáo técnica de um livro meu. Não sei qual ê o seu segredo, masSusan McClung conseguiu transformar meu texto na obra que você tem em mãos. Aqualidade do conteúdo deste livro é,prova do esforço de Rozanne, Susan e do restanteda equipe editorial.

ecim

't%l

Page 9: Livro_SQL
Page 10: Livro_SQL

lntrodução.... .....29Requisitosdesistema.... ......33lnstalação e configuração do SQL Server 2008 . . . . 35

Configuração e manutenção de banco de dados . .7LTabelas ..97Projetando índices do SQt Server. . . . L2L

lndexação full text . L49

Distribuindo e particionando dados. . L73

lmportando e exportando dados ....2OLProjetando gerenciamento baseado em diretiva .217Fazendo backup e restaurando um banco de dados . . ..237Automatizando o SQt Server . .273Projetando a segurança do SQL Server . . . .29LMonitorandooMicrosoftSQLServer.... ..345Otimizando o desempenho .... 405

Clusterdefailover.... ...445Espelhamento de banco de dados . . .489Logshipping.. ....52LReplicação... .....551

GIossário .... 593

Respostas .... 601

índice . .649

1

2

3

4

5

6

7

8

9

10

11

L2

13

L4

15

16

L7

Page 11: Livro_SQL
Page 12: Livro_SQL

lntrodução.... .....29UtilizandooCD.. .......29

Como instalar os testes. . . . 30

Comoutilizarostestes ....30Comodesinstalarostestes .......31

Programa MicrosoftCertified Professional .... 3l-

Suportetécnico ...32

Requisitosdesistema.... ......33Requisitosdehardware ........33Requisitosdesoftware ...33

lnstalação e conf¡guração do SQL Server 2008 . . . . 35

Antesdecomeçar .......35Lição 1-: Determinando os requisitos de hardware e software.... ....... . 37

Requisitosmínimosdehardware ........37Sistemasoperacionaissuportados..... ....... 38

Requisitosdesoftware ....39Resumo da lição. ... 40

Revisãodalição ....40Lição 2:Selecionando edições do SQLServer ....... 42

ServiçosdoSQlServer ....42EdiçõesdoSQlServer ....46Resumodalição. ...49Revisãodalição ....49

Lição 3: lnstalando e configurando instâncias do SQL Server ..... . 5L

Contasdeserviço. ........51-Sequências de collation .. . 52

Modosdeautenticação.. .......52lnstânciasdoSQLServer. ........53

/.11 .11.ia,. ,,'.,t.'- ).".. 'r'

". /, ,.:;;-:;:/''-4,1';::'-;. . -

ffiøt

Page 13: Livro_SQL

L2 Sumário

SQL Server Configuration Manager

Resumo da lição.

Revisão da lição

Lição 4: Configurando o Database Mail

Database Mail.. .

Resumo da lição.

Revisão da lição

Revisão do capítulo. . . .

Resumo do capítulo.

Cenário de caso

Práticas sugeridas

lnstalando o SQL Server. . . . .

Gerenciando serviços do SQL Server

Faça um teste. .

Termos-chave. .

Configuração e manutenção de banco de dados . .7LAntesdecomeçar .......7i,Lição1:Configurandoarquivosegruposdearquivo ....... 73

Arquivosegruposdearquivo. ........73Logsdetransação .......76Dados FILESTREAM ...... 77

Banco de dados tempdb ....... 78

Resumodalição. ...79Revisãodalição ....80

Lição 2: Configurando opções de banco de dados . . . 8i_

Opções de banco de dados. . ... Bj_

Opçõesderecuperação.. ....... 81

Opçõesautomáticas ......84Controledealteração .....85Acesso ......85Parametrização.... .......86

Sequênciasdecollation .;.... ........87Resumodalição. ...88Revisãodalição ....88

53

61

6L

62

62

65

65

67

67

67

67

68

68

69

69

Page 14: Livro_SQL

Lição 3: Mantendoa integridadedo banco de dados ...... 89

Verificações de integridade do banco de dados . . . . . 89

Resumodalição. ...91Revisãodalição ....9L

Revisãodocapítulo. .....93Resumodocapítulo. ......93Termos-chave..... .......93Cenáriodecaso ....93

Práticassugeridas .......95Configurando bancos de dados .... .... 96

Faça um teste.. ... 96

Tabelas . .97Antesdecomeçar .......97Lição1-:Criandotabelas ........99

Esquemas ...99Tipos de dados. . .. 100

Propriedades de coluna . . 105

Colunascalculadas. ......108Compactaçãodelinhaepágina .......1-09Criandotabelas ...1-09Resumo da lição. . . 1L2

Revisãodalição ...11.2Lição2:lmplementandoconstraints... ..... L13

Chavesprimárias .. L13

Chavesestrangeiras ......113Constraintsexclusivas .... tL4Constraintspadrão ...... tl4Constraintsdeverificação..... ..114Resumo da lição. .. 116

Revisãodalição ...116Revisãodocapítulo. .... tL7

Resumodocapítulo. .....117Termos-chave..... ......117Cenáriodecaso ...1L8

Sumário 13

Page 15: Livro_SQL

L4 Sumário

Práticassugeridas ......1i.9Criandotabelas ... i_19

Criandoconstraints ......1j.9Façaumteste.. ..1i_9

Projetando índices do SQt Server. . . . L2lAntesdecomeçar ...... L2ILição L: Arquitetura dos índices . . . . .. I23

Estruturadosíndices .....I23B-Trees. .... L24

Níveis de índice ... I25Resumo da lição. . . 127

Revisãodalição ...L27Lição 2: Projetando índices . ... 129

índicesclusterizados..... ......I2gíndicesnãoclusterizados.. .....131Opções de índice . . 133

índicesxMl.. .....135índicesespaciais. .. i-36

Resumo da lição. . . 139

Revisãodalição ...139Lição 3: Mantendo índices. . . .. i_40

Gerenciamentoemanutençãodeíndices ..... J,40

Desativando um índice ... L4L

Resumo da lição. . . 143

Revisãodalição ...L43Revisãodocapítulo. .... L44

Resumodocapítulo. .....I44Termos-chave..... ...... L44

Cenário de caso . .. I45Práticassugeridas ......146

Criandoíndices. ...L46Faça um teste.. .. I47

Page 16: Livro_SQL

lndexação full text . t49Antesdecomeçar ......149Lição 1-: Criando e preenchendo índices full text . . . . 151-

Catálogosfulltext .......151índices full text . .. . L52

Controledealteração ....153ldioma, decompositores de palavra e identificadores

de raiz de palavra .. .. .. 754

Resumo da lição. . . 156

Revisão da lição .. . I57Lição 2: Consultando dados full text . . 158

FREETEXT. .. 158

coNTAtNS. . .. .... 159

Resumo da lição. . . 163

Revisãodalição ...1-63Lição 3:Gerenciandoíndicesfulltext ....... 165

Dicionáriodesinônimos..... ...165Listasdeparada ...l-66Preenchendo índices full text. . . . 166

Resumo da lição. . . 169

Revisãodalição ...169Revisão do capítulo. . . .. L70

Resumodocapítulo. .....170Termos-chave..... ......170Cenário de caso . .. 770

Práticas sugeridas .. .. .. L7L

Criando um índice fulltext. .. .. . l7lConsultandoumíndicefulltext .......172Criando um arquivo de dicionário de sinônimos. . . . . . .. .. . I72Criando uma lista de parada . . . . I72

Faça um teste.. .. 172

Sumário 15

Page 17: Livro_SQL

16 Sumário

Distribuindo e particionando dados. . L73

Antes de começar . .. .. . I73

Lição 1-: Criando uma função de partição .. . . 175

Funçöesde partição .....I75Resumo da lição. .. 179

Revisão da lição ... 179

Lição 2: Criando um esquema de partição . . . 180

Esquemasdepartição ....180Resumo da lição. .. L82

Revisão da lição . .. L82

Lição3:Criandotabelaseíndicesparticionados..... ..... 184

Criando uma tabela particionada .. .. .. L84

Criando um índice particionado

Resumo da lição. .. 787

Revisão da lição .. . 187

Lição4:Gerenciandopartições. ......188OperadoresSpliteMerge ......188Alterando um esquema de partição .. .. 1-88

Alinhamento de índices . . 1-89

OperadorSwitch ..1-89

Resumo da lição. . . 193

Revisão da lição .. . 194

Revisãodocapítulo. ....195Resumodocapítulo. .....195Termos-chave..... ...... L95

Cenáriodecaso ...1-96

Práticassugeridas ......1-98Particionamento. . ..... .. 1-98

Faça um teste.. .. 199

lmportando eexportando dados ....2OLAntes de começar .. .. . . 201'

Lição L: lmportando e exportando dados. . .. 203

Page 18: Livro_SQL

BulkCopyProgram. ....203O comando BULK INSERT . . .. . .. . ... 205

O lmport and Export Wizard do SQL Server . . . 206

Resumo da lição. . . 21,2

Revisãodalição ...212Revisãodocapítulo. ....2I3

Resumodocapítulo. .....2I3Termos-chave..... ......2L3Cenáriodecaso ...2I3

Práticas sugeridas . .. . .. 2I5lmportando eexportandodados ......2I5

Façaumteste.. ..21,6

8 Projetando gerenc¡amento baseado em diretiva .2L7Antesdecomeçar ......2I7Lição L: Projetando diretivas . . . 2lgFacetas ... zLg

Condições. .. .... 220

Alvo de diretiva . . 220

Diretivas .. 221,

Categorias de diretiva. . . 221,

Conformidade com as diretivas .. . . . . 222

Central ManagementServer ....222lmportaçãoeexportaçãodasdiretivas ......223

Resumo da lição. ..232Revisãodalição ...232

Revisãodocapítulo. ....233Resumodocapítulo. .....233Termos-chave..... ......233Cenáriodecaso ...233

Práticas sugeridas . .. .. . 236lmplementando gerenciamento baseado em diretiva. ...... 236

Faça um teste . .. 236

;. i1!

,1

Sumário t7

Page 19: Livro_SQL

18 Sumário

Fazendo backup e restaurando um banco de dados . . . .297Antesdecomeçar ......237Lição 1-: Fazendo backup de bancos de dados . .. . .. 239

Tipos de backup ..... .. 239

Backupscompletos ......240Backups de log de transação . . .. 243

Backupsdiferenciais .....244Backups de grupo de arquivos . . 245

Backupsparciais .......245Corrupção de página . .. 246

Planosdemanutenção... .....246Certificadosechaves mestras ..247Validando um backup. . . 249

Resumo da lição. . . 25L

Revisãodalição ...251Lição2: Restaurando bancos de dados . ... .. 252

Detalhesinternosdo log detransação ......252Restauraçöes de banco de dados ... .. 254

Restaurandoum backupcompleto. ....254Restaurandoum backupdiferencial ....256Restaurando um backup de log de transação . . 257

Restauraçõesonline. .....257Restauraçãodeuma páginacorrompida ......258Restauração com erros de mídia .... . . . 259

Resumo da lição. . . 262

Revisãodalição ...263Lição 3: Snapshots de banco de dados . ... .. 264

Criando um snapshot de banco de dados . .. 264

Tecnologia Copy-On-Write . .. .. 265

Revertendo dados com um snapshot de banco de dados .. 266

Resumo da lição. .. 26g

Revisãodalição ...269Revisãodocapítulo. ....269

Resumodocapítulo. .....269

Page 20: Livro_SQL

Termos-chave..... ......269Cenário de caso .. . 270

Práticassugeridas ......272Fazendo backup de um banco de dados. ..... 272

Restaurando um banco de dados ...... 272

Faça um teste.. .. 272

Automatizando o SQt Server ..273Antes de começar .. .. .. 273

Liçãol:Criandojobs..... ....274Etapas dejob ..... 274

Agendas dejob .. 275

Históricodejob. .......275Operadores .....276

Resumo da lição. . . 280

Revisão da lição . .. 280

Lição2: Criando alertas ....... 292

Alertas do SQL Server Agent. . . 282

Resumo da lição. .. 285

Revisão da lição ... 2Bs

Revisão do capítulo. .. . . 286

Resumo do capítulo. ..... 286Termos-chave..... ......286Cenáriodecaso ...286

Práticassugeridas ......298Criandojobs..... .......289Criando alertas. ... 289

Faça um teste.. .. 289

Projetando a segurança do SQL Server . . . .29LAntes de começar ..... . zgL

Lição 1-:TCP endpoints..... ... 292

Tiposdeendpointecargas úteis.. .....292Acesso ao endpoint ...... 293

10

Sumário 19

11

Page 21: Livro_SQL

20

TCP endpoint..... ..... 293

Argumentosdo protocoloTCP. .......293Argumentos comuns de Database Mirroring e Service Broker. . . . . . 294

ArgumentosespecíficosdeDatabaseMirroring. ..... 295

Argumentos específicos de Service Broker . . . . 295

Resumo da lição. .. 297

Revisão da lição ... 297

Lição 2:Configurando a área de superfície do SQL Server. . . . . . . . 299

Configuração de área de superfície . . . . 299

Resumo da lição. .. 302

Revisãodalição ...302Lição3:Criandoprincipais. ....303

Logins .....303Roles de servidor fixos. . . . 305

Usuários de banco de dados . . . . 306

Usuáriossemlogin ......306Rolesdebancodedadosfixos.. .......307Roles de banco de dados de usuário . . . 308

Resumo da lição. . . 309

Revisãodalição ...31-0Lição4:Gerenciandopermissöes.. ....311

Alcançáveis .......311Permissões. .......312Segurança de metadados.... ... 313

Ownershipchains. .......3L4Personificação.... .......31-5Chavesmestras. ...315Certificados .......316Assinaturas .......317Resumo da lição. .. 322

Revisãodalição ...323Lição 5:Auditoria de instâncias do SQL Server . . . . . 324

TriggersdeDDl ...324Especificaçöesdeauditoria... ..325Auditoria C2... ... 327

Page 22: Livro_SQL

Resumo da lição. . . 329

Revisãodalição ...330Lição6:Criptografandodados .......331

Criptografiadedados ....331Algoritmosdehashing ...332Chavessimétricas. .......333Certificadosechavesassimétricas ......333Criptografiatransparentededados ....333Gerenciamentodechavedecriptografia. ..... 335

Resumo da lição. . . 339

Revisãodalição ...339Revisãodocapítulo. ....341,

Resumodocapítulo. .....341,Termos-chave..... ......341Cenário de caso: Projetando a segurança do SQL Server . . . . 342

Práticassugeridas ......343Gerenciando loginse rolesdeservidor .......343Gerenciando usuários e roles de banco de dados . . . . 344

Gerenciando permissões de instância do SQLServer ....... 344

Gerenciando permissöes de banco de dados . . 344

Gerenciando permissões de esquema e permissões de objeto . . . . . 344

Fazendo auditoria de instâncias do SQL Server . . . . . . 344

Gerenciando criptografia transparente de dados. . . . . 344

Faça um teste.. .. 344

MonitorandooMicrosoftSQLServer.... .. 345

Antesdecomeçar ......345Lição L:TrabalhandocomoSystem Monitor .......347VisãogeraldoSystem Monitor. ......347Capturando logs de contador. . ... . .. 348

Contadores de desempenho... ... .. . 350

Resumo da lição. . . 353

Revisãodalição ...353Lição 2: Trabalhando com o SQL Server Profiler . . . . 354

Definindo um rastreamento . . . ...... 354

2t

L2

Page 23: Livro_SQL

22

Especificandoeventosderastreamento.. ...357Selecionandocolunasdedados ......359Aplicandofiltros. ......360Gerenciandorastreamentos.... .....361-Correlacionando dadosdedesempenho e monitoramento ...... 362

Resumo da lição. .. 369

Revisãodalição ...369Lição3: Diagnosticandofalhasdebancodedados. ....... 370

Logs do SQL Server. . . .. 370

Problemas de espaço no banco de dados. . . . 372

Resumo da lição. .. 376

Revisãodalição ...377Lição 4: Diagnosticando falhas de serviço. . . . 378

Localizandofalhasde inicializaçãodeserviço ......378Configuration Manager ..378Resumo da lição. . . 387

Revisãodalição ...387Lição 5: Diagnosticandofalhasde hardware ....... 389

Unidadesdedisco. .....389Memóriaeprocessadores... ..390

Resumo da lição. . . 391-

Revisãodalição ...391Lição 6: Resolvendo problemas de bloqueio e deadlock . . . 393

Bloqueios .......393Níveis de isolamento de transação . . . . 394

Processosobstruídos ...395Deadlocks. ......396

Resumo da lição. . . 400

Revisãodalição ...400Revisãodocapítulo. ....40L

Resumodocapítulo. .....401,Termos-chave..... ......401"Cenáriodecaso ...401

Práticassugeridas ......404Criando um rastreamento com o SQL Server Profiler para

diagnosticar problemas dedesempenho edeadlock.... .. 404

Page 24: Livro_SQL

Criando um log de contador com o System Monitor paradiagnosticar problemas de desempenho, deadlock e sistema .... 404

Faça um teste.. .. 404

Otimizando o desempenho .... 405

Antesdecomeçar ......405Lição1:UsandooDatabaseEngineTuningAdvisor ....... 407

Database Engine Tuning Advisor . .. .. 407

Resumo da lição. . . 4L3

Revisão da lição .. . 413

Lição2: Trabalhando com o Resource Governor .... 4I4Resource Governor ..... 4!4

Resumo da lição. .. 424

Revisão da lição .. . 424

Lição 3: Usando views e funçöes de gerenciamento dinâmicas . . . .. .... 425

Categorias de DMV. .... 425

Estatísticas de banco de dados . . 426

Estatísticasdeconsulta ...427Estatísticas do subsistema de disco. . . . . 428

Recursos de hardware .... 429

Resumo da lição. .. 432

Revisãodalição ...432Lição4: Trabalhando com o Performance Data Warehouse... .... 433

Performance Data Warehouse . . . .. .. 433

Resumo da lição. . . 438

Revisãodalição ...439Revisão do capítulo. .. . . 440

Resumo do capítulo. . .. .. 440

Termos-chave..... ......440Cenário de caso .. . 44L

Práticas sugeridas ... .. . 443

Usando o Performance Data Warehouse para reunir dadosparaotimizaçãodedesempenho ....443

Usando o Database Engine Tuning Advisor para reunir dadosparaotimizaçãodedesempenho .... M3

13

23

Page 25: Livro_SQL

24

Usando Dynamic Management Views para reunir dados paraotimizaçãodedesempenho... ......443

Faça um teste.. .. 444

Clusterdefailover.... ...445Antesdecomeçar ......445Lição 1-: Projetando o cluster do Windows . . . 448

Componentes do cluster do Windows . . 448

Tipos de clusters. . . 450

Configuraçãodesegurança.... .......45LConfiguração de disco . .. 45L

Configuraçãoderede ....452Recursosdecluster ......453Gruposdocluster. .......454Resumo da lição. . . 466

Revisãodalição ...467Lição 2: Projetando instâncias em cluster de failover do SQLServer2008.. ..468

Terminologia. .. .. ....... 469

Componentes da instância do cluster de failover. . . . . 469

Verificaçöesdevitalidade .......47LFailoverdecluster .......471Resumo da lição. .. 482

Revisãodalição ...482Revisãodocapítulo. ....483

Resumodocapítulo. .....483Termos-chave..... ......483Cenáriodecaso ...483

Práticassugeridas ......486Cluster do Windows . ... . 487

Failover cluster do SQL Server . . . 487

Façaumteste.. ..487

L4

Page 26: Livro_SQL

15 Espelhamento de banco de dados . . .489Antesdecomeçar ......489Lição 1: Visão geral do espelhamento de banco de dados . .. .. .. 490

Roles do espelhamento de banco de dados .. . 490

Principal role... ...491Roledeespelho ...49IServidor de witness (testemunha). . . . . . .. .. .. 49L

Endpoints do espelhamento de banco de dados . . . . . 492

Modos de operação .. .. . 493

Uso de cache . .... 496

Redirecionamento transparente de clientes . . . 497

Threading do espelhamento de banco de dados. . . . . 497

Snapshots de banco de dados. .. 497

Resumo da lição. . . 500

Revisãodalição ...501-Lição2: lnicializandoo espelhamento de banco de dados .......502

Modelo de recuperação.. . ... .. 503

Backup e restauração .. .. .. .. .. 504

Cópia de objetos de sistema . . . . 504

Resumo da lição. .. 507

Revisão da lição .. . 507

Lição 3: Projetando estratégias defailoverefailback ...... 509

Projetando o failover de sessão de espelhamento. . . . 509

Projetando o failback da sessão de espelhamento. . . . 51-0

Resumo da lição. . . 51-3

Revisãodalição ...513Revisão do capítulo. .. .. 5I4

Resumo do capítulo. . . .. . 514

Termos-chave..... .....5L4Cenáriodecaso ...515

Práticassugeridas ......5L8Estabelecendo espelhamento de banco de dados. . . . 51-8

Criando um snapshot de banco de dados em um espelho. .. 519

Façaumteste . ..519

Sumário 25

Page 27: Livro_SQL

26 Sumário

16 Logshipping.. ....52LAntesdecomeçar ......521Lição 1: Visão geral do log shipping . . 522

Cenários de log shipping . . ... . . 522

Componentes do log shipping . . 523

Tipos de log shipping . . .. 525

Resumo da lição. . . 525

Revisãodalição ...526Lição 2: lnicializando um log shipping. .. . . .. 527

lnicialização de log shipping . .. . 527

Resumo da lição. . . 537

Revisão da lição . .. 537

Lição3:Projetandoestratégiasdefailoverefailback ...... 538

Failover de log shipping . . 539

Failback de log shipping . . 540

Resumo da lição. . . 543

Revisãodalição ...543Revisãodocapítulo. ....544

Resumo do capítulo. . . . .. 544

Termos-chave..... ......544Cenáriodecaso ...545

Práticas sugeridas . ... .. 549

lniciando o log shipping..... ... 549

Log shipping para failover e failback . . . 550

Faça um teste . .. 550

L7 Replicação... .....551Antesdecomeçar ......551-Lição L:Visãogeralda replicação..... ...... 552

Componentesdareplicação.. ..552Rolesdereplicação ......553Topologiasdereplicação.... ...554Agentesdereplicação..... .....555Perfisdeagente ...556Métodosdereplicação..... ....557

Page 28: Livro_SQL

Conflitosdedados. ......559Resumo da lição. . . 563

Revisãodalição ...563Lição2: Replicaçãotransacional ......564

Controle de alteração .... 564

Opçõestransacionais...... .....566Arquiteturastransacionais..... .......568Monitoramento... ......570Validação. .. 571

Resumo da lição. . . 575

Revisãodalição ...575Lição 3: Replicação por merge . .. .... 577

Controledealteração ....577Validação. .. 580

Resumo da lição. .. 582

Revisão da lição . .. 582

Revisãodocapítulo. ....584Resumodocapítulo. .....584Termos-chave..... ......584Cenáriodecaso ...585

Práticassugeridas ......589Replicaçãotransacional ...589Replicaçãopormerge ....591

Faça um teste . .. 59L

Glossário .... 593

Respostas .... 601

índice . .643

Sumário 27

Page 29: Livro_SQL
Page 30: Livro_SQL

lntroduçãg

Este kit de treinamento é destinado a profissionais de tecnologia da informaçáo (TI)que pretendem Íazer o Exame 70-432 MCTS (Microsoft Certified Technologz Specialist),assim como para administradores de banco de dados (DBAs) que querem aprender aimplementar, gerenciar e solucionar problemas de instâncias do Microsoft SQL Server2008. Para usar este kit, você deve ter conhecimento prâtico em Microsoft Windows e

SQL Server 2008, e experiência com SQL Server ou outra plataforma de banco de dados.Com este kit de treinamento, você vai aprender a:

I Instalar e configurar o SQL Server 2008

r Criar e implementar objetos de banco de dados

r ImplemenÍar alta disponibilidade e recuperação de desastres

I Fornecer segurança a instâncias, bancos de dados e objetos de banco de dados

I Monitorar e solucionar problemas de instâncias do SQL Server

Utilizando o CDO CD deste livro contém:

r Testes (em inglês) Você pode testar seus conhecimentos sobre como implementare manter bancos de dados SQL Server 2008 utilizando testes eletrônicos (em in-glês), que podem ser personalizados pan atender as suas necessidades a partir doconjunto de perguntas de revisão de lição deste livro. Você também pode praticarpaÍa o exame de cenificaçáo 70-432 fazendo testes criados a partir de um grupo de200 questões reais do exame.

I Arquivos de exercícios Para os exercícios do livro que contém código, o CD queacompanha o livro contém um ou mais arquivos em uma pasta do capítulo corres-pondente. Você pode digitar o código do livro ou abrir o arquivo de código corres-pondente em uma janela de consulta.

r Livro eletrônico (eBook) Uma versáo eletrônica desta obra (em inglês) está dis-ponível em formato PDF (Portable Document Format), que você pode visualizar uti-lizando o Adobe Acrobat ou o Adobe Reader. Você pode usar o livro eletrônico pararccofi.aÍ e colar código quando trabalhar nos exercícios.

r Amostra de capítulos (em inglês) CapÍtulos de outros títulos da Microsoft Presssobre SQL Server 2008 estão disponíveis no CD em formato PDE

t ';:'i:1"'.1

, .;'.r'.1',.:'.'""..".

Page 31: Livro_SQL

lntrodução

Como instalar os testes

Para instalar o software de testes do CD em seu disco rígido, faça o seguinte:

1. Insira o CD do livro em sua unidade de CD-ROM e aceite o acordo de licença que

aparece na tela. Um menu de CD aparece.

NOTA Se o menu de CÐ não aparecer

Se o menu de CD ou o acordo de licença não apareceç a Reprodução Automática (AutoRun)pode estar desativada em seu computador. Consulte o arquivo Leiame.txt no CD para obterinstruçöes de instalação alternativas.

2. Clique em Practice Tests e siga as instruçóes na tela.

Como utilizar os testes

Para iniciar o soffware de testes, siga estes passos:

1. Clique em Iniciar e selecione Todos os Programas, Microsoft Press Training Kit ExamPrep. Uma janela aparece mostrando todos os conjuntos de preparaçãto para examedos kits de treinamento da Microsoft Press instalados em seu computador.

2. Clique duas vezes na revisão da lição ou no teste que você deseja usar.

Opções de revisão da lição

Quando você inicia uma revisão de liçáo, a caixa de diálogo Custom Mode aparece paraque você configure o teste. Você pode clicar em OK para aceitar os padrões, ou podepersonalizar o número de perguntas desejado, como o software de testes funciona, comquais objetivos do exame as questões devem estar relacionadas e se deseja cronometrara revisáo da lição. Se você estiver rcfazendo um teste, pode escolher se deseja ver todasas questões novamente ou apenas as que errou ou não respondeu.

Depois de clicar em OK, a revisáo da liçáo inicia. Você pode fazer o teste executando ospassos a seguir:

1. Responda as perguntas e use os botões Next, Previous e Go To parair de uma ques-

tã,o a outra.

2. Depois de responder uma pergunta, se quiser ver quais são as respostas corretas,junto com uma explicaçâo de cadauma, clique em Explanation.

5. Se preferir esperar até o final do teste paraver seu desempenho, responda todasas perguntas e clique em Score Test. Você verá,um resumo dos objetivos do exameescolhidos e a porcentagem das perguntas respondidas corretamente, no total e porobjetivo. Você pode imprimir uma cópia de seu teste, rever suas respostas ourefazero teste.

Page 32: Livro_SQL

Opçöes de testeAo iniciar um teste, você pode escolher entre as opções Certification Mode, Study Modeou Custom Mode:

r Certification Mode Semelhante à experiência real de lazer um exame de certifi-cação. O teste tem um número definido de perguntas, é cronometrado e você náopode parar e reiniciar o cronômetro.

r Study Mode Cria um teste não cronometrado em que você pode examinar as res-postas corretas e as explicações depois de responder a cada pergunta.

I Custom Mode Oferece controle total sobre as opções de teste para que você possap ersonalizâ-las como desej ar.

Quando você está fazendo o teste, a interface do usuário é basicamente a mesma emtodos os modos, mas com diferentes opções ativadas ou desativadas, dependendo domodo. As principais opções foram discutidas na seção anterior, "Opções de revisão dalição".

Quando você verificar a resposta de uma pergunta do teste, uma seçáo "References"(Referências) indica onde no kit de treinamento você pode encontrar informações rela-cionadas àquela pergunta e fornece links para outras fontes de informação. Depois declicar em Test Results para ver a pontuaçáo do teste infeiro, você pode clicar na guiaLearning Plan para ver uma lista de referências para cada objetivo.

Como desinstalar os testesPara desinstalar o software de testes do kit de treinamento, use a opção Adicionar ouremover programas (Windows XP ou Windows Server 2003) ort a opção Programas e

Recursos (Windows Vista ou Windows Server 2008) no Painel de Controle.

lntrodução 31

Programa Microsoft Cert¡fied ProfessionalAs certificações da Microsoft são o melhor método para Íestil seu conhecimento sobreos produtos e tecnologias atuais da Microsoft. Os exames e as certificações correspon-dentes são desenvolvidos para validar o seu domínio de competências fundamentaisao projetar e desenvolver ou implementaÍ e dar suporte para soluções com produtos e

tecnologias da Microsoft. Os profissionais de informâtica que adquirem certificados Mi-crosoft são reconhecidos como especialistas evalorizados no mercado. As certificaçõesfrazem diversas vantagens para profissionais, empregadores e organizações.

MAIS INFORMAçöES Todas as certificações da Microsoft

Para ver uma lista completa de certificaçöes da Microsoft visite o endereço www.microsoft.co m/eo rn i n g,/m cp/d efo u lt. m spx.

Page 33: Livro_SQL

32 I ntrodução

Suporte técnico*Todo esforço foi feito para garanfir a precisáo deste livro e do conteúdo do CD que o

acompanha. Caso você tenha comenfârios, perguntas ou ideias a respeito deste livro oudo CD, envie-as pata a Microsoft Press usando um dos métodos a seguir:

E-moil. tkínput@mícroso;ft .com

Correio postal:. Mícroso¡ Press

Attn: MCTS Self-Paced Training Kit (Exam 70-432): Microsoft SQL Server 2008 Im-plementation and Maintenance Editor

One Microso;ft Wqt

Redmond, WA 98052-6399

Para mais informações sobre suporte relativas a este livro e ao CD que o acompanha(incluindo respostas para perguntas comuns sobre instalaçáo e uso), visite o site daMicrosoft Press Technical Support, no endereço www.mícroso¡ft.com/learning/support/booþs/. Para conectar-se diretamente na Base de Dados de Conhecimento Microsoft efazer uma consulta, visite o endereço http://support.mícrosoJft.com/search/. Parc obfetinformações de suporte a respeito de software da Microsoft, acesse com http://support.mícroso;ft.com.

*N. de E.: Comentários e sugestões relativos à edição brasileira desta obra podem ser enviados para

s e cre tan aed i to ria I @ artm ed. co m. br.

Page 34: Livro_SQL

uisitos

Requisitos de hardwarePara completar a maioria dos exercícios deste livro, você vai precisar de apenas umamáquina. Os exercÍcios do Capítulo 14 exigem pelo menos três máquinas virtuais. Seus

computadores ou máquinas virtuais devem salisfazet as seguintes especificações de

hardware mínimas:

r Processador Pentium III ou mais rápido, pelo menos 1,0 gigahertz (GHz) pata52bite 7,6 GHz para 64bit

t 512 megabytes (MB) de memória RAM

t 20 gigabytes (cB) de espaço disponível no disco rígido

r Unidade de DVD-ROM

I Um monitor Super VGA com resoluçáo de 800 x 600 ou superior

r Um teclado e um mouse Microsoft ou dispositivo de apontamento compatível

Requisitos de softwareÉ necessário este softwarepanfazer os exercícios:

r Microsoft .NET Framework 3.5

r E qualquer um dos seguintes sistemas operacionais Microsoft windows:

n Windows XP Professional Home, Tablet, Media Center ou Professional com SP2

o Windows Vista SP1

a Windows Server 2003 Standard ou Enterprise com SP2

n Windows Server 2008 Standard ou Enterprise

Microsoft Data Access Components (MDAC) 2.8 SP1 ou posteriorI

T Memória compartilhada, pipes nomeados ou suporte de rede pataTCPllP (Transmis-

sion Control Protocol/Internet Protocol)

I Microsoft Internet Explorer 6.0 SP1 ou Windows Internet Explorer 7 .O ou posterior

Page 35: Livro_SQL

34 Requisitos de sistema

Para executar computadores como máquinas virtuais dentro do Windows, você precisainstalar o Microsoft Virtual Server 2005 R2, Hyper-V ou software de máquina virtualde outro fornecedor. Parabaixar uma ediçáo de avaliação do Virtual Server 2OO5 R2 oupara obíer mais informações sobre o sofrware, visite o endereço http://vtww.mícroso¡ft.com/vírtualserver. Para obter mais informações sobre o Hyper-! visite o endereço http://www. mí c ro s o¡ft . c o m / hy p e rv.

Page 36: Livro_SQL

Capítulo 1-

stalação

Este capítulo irâ preparâ-Lo para instalar instâncias do Microsoft SQL Server. Você vaiconhecer os recursos de cada ediçáo do SQL Server, assim como os requisitos de hard-ware para instalar o SQL Server. No final deste capítulo, você poderâ configurar serviçose componentes do SQL Server. Você também vai aprender a configurar o Database Mail,que será usado para diversas Íarefas de notificação.

Objetivos de exame neste capítulo:

r Instalar o SQL Server 20OB e serviços relacionados.

r Configurar instâncias do SQL Server.

r Configurar serviços do SQL Server. Ë

r Configurar componentes adicionais do SQL Servþr.

I Implementar oDatabase Mail.

Liçöes deste capítulo: ,î;

r Liçáo 1: Determinando os requisitos de hardwa$ e software 37

r Liçáo 2: Selecionando edições do SQL Server 42

r Lição 3: Instalando e configurando instâncias do SQL Server 5lr Lição 4: Conflgwando o Database Mail 62

Antes de começarPara fazer as lições deste capítulo, você deve ter:

r uma máquina que satisfaça ou supere os requisitos de hardware e software míni-mos, conforme descrito na Liçáo 1

r mídia de instalação do SQL Server 2008

Page 37: Livro_SQL

36 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

áÍià rvlunao real\s!tMtchael HoteÍe

O SQL Server 2008 nâo é simplesmente um banco de dados, mas uma plataformade banco de dados completa, composta de diversos serviços e centenas de recur-sos. Com muita frequência, as empresas simplesmente "apontam e clicam" parainstalar o SQL Server e, entáo, começam a caffegaÍ dados. Antes da instalação,você precisa determinar como o computador com SQL Server seútutilizado, assimcomo os recursos de hardware exigidos.

Não faz muito tempo, eu estava trabalhando junto a uma empresa que tinha aca-bado de instalar servidores com SQL Server e dependiam dacapacidade de alterarconfigurações durante esse processo. Infelizmente, ninguém fez o dever de casapara um novo aplicativo que a empresa estava implantando. O SQL Server foiinstalado e a equipe de DBA implantou a estrutura de banco de dados e começoua caÍregar dados. Repentinamente, os procedimentos de carga foram canceladose o banco de dados não estava mais acessível. Eles tinham subdimensionado asunidades de disco rígido e ficado sem espaço durante o processo de carga. Depoisde terem alocado mais espaço em disco e iniciado novamente o processo de carga,encontraram outro erro, que tornou o SQL Server indisponível. Embora tivessemalocado mais espaço em disco parao banco de dados, agorao Tempdb tinha frca-do sem espaço. Após várias tentativas, eles finalmente conseguiram carregar osdados, apenas para descobrir que as especificações de projeto exigiam replicação,service broker e recursos CLR.

Após a instalação do suporte para replicaçã.o e a configuraçáo do service brokere das rotinas deCLR, o sistema entrou em produçáo, com 16 dias de atraso. Emmenos de um dia, todos os usuários estavam reclamando de tempos de respostalentos. A equipe de DBA tinha planejado ter apenas 20 usuários concomitantesno aplicativo, o número máximo que tinham visto antes; só que mais de 2.000pessoas estavam tentando usar o novo aplicativo. A máquina de processador úni-co, com 2 GB de memória RAM, era insuficiente para manipular 2.00O usuáriosconcomitantes tentando acessar mais de 400 GB de dados.

Depois de desativar o aplicativo, comprar novo hardware e reimplantar o siste-ma, o novo aplicativo voltou a openÍ, com 43 dias de atraso da data marcada. Amaioria dos usuários tinha mudado para outros sistemas, implantados por con-correntes. A empresa gastou milhões de dólares em anúncios, devido à falta deplanejamento nos estágios de instalação e implantação.

Page 38: Livro_SQL

Lição 1: Determinando os requisitosde hardware e software

O SQL Server 2008 tem muitos requisitos mínimos de hardware e software. Esta liçãoexplica os requisitos mínimos de hardware, junto com as versões de sistema operacio-nal e o software adicional necessário paÍa executar instâncias do SQL Server 2008.

IMPORTANTE Requisitos mínimos de hardware

Capítulo L r lnstalação e Configuração do SQL Server 2008

Esta lição descreve os requisitos mínimos para instalar o SQL Server. Normalmente, os sistemasde produção exigem mais hardware para satisfazer as expectativas de desempenho e capaci-dade. Você precisa aplicar o conhecimento dos capítulos posteriores deste livro para ajudar a

determinar os requisitos de memória, armazenamento em disco e processador que podem sernecessários para determinado aplicativo.

Após esta lição, você será capaz de:

I Verificar os requisitos mínimos de hardware

I Verificar o suporte para o sistema operacional

I Verificar o software adicional necessário

Tempo estimado para a lição: 20 minutos

Requisitos mín¡mos de hardwareO SQL Server 2005 tinha diversos requisitos que dependiam da edição de SQL Server,

assim como do fato de ser uma versão de 32 ou de 64bits. o SQL Server 2008 simplificaos requisitos mínimos de hardware parauma instância do SQL Server.

Os requisitos mínimos de hardware estão iistados na Tabela 1-1.

Tabela 1-1 Requisitos de hardware

Processador

Velocidade do processador 1,0 gigahertz (GHz) ousupenor

Memória

A quantidade de espaço em disco consumida pela instalaçáo depende dos serviços e

utilitários instalados. Para determinar a quantidade de espaço em disco necessária,consulte o artigo do SQL Server Books Online, "Hardware and Software Requirementsfor Installing SQL Server 2008" , no endereço http://technet.mícroso¡fr.com/en us/library/ms 143506.asp.r.

Pentium lll ou superior ltanium, Opteron, Athelon ou Xeon/Pentium com suporte para EM64T

5L2 megabytes (MB)

L,6 GHz ou superior

512 MB

Page 39: Livro_SQL

38 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

IMPORTANTE Componentes adicionais de hardware

O SQL Server Books Online lista um mouse, uma unidade de CDIDVD e um monitor comresolução mínima de L024 x 768 como requisitos para instalação. Contudo, é possível instalaro SQL Server em um computador que não tenha desses dispositivos ligados, o que é muitocomum dentro de um ambiente de servidor. A unidade de CDIDVD será necessária apenas se

você estiver instalando a partir de um disco. O monitor será necessário somente se as ferra-mentas gráficas estiverem sendo usadas.

Sistemas operacionais suportadosO SQL Server 2008 é suportado nas versões de 32 e de 64 bits do Microsoft Windows.A versão de 64 bits do SQL Server só pode ser instalada em uma versáo de 64 bits doWindows. A versão de 32 bits do SQL Server pode ser instalada em uma versáo de 32bits do Windows ou em uma versáo de 64bits do Windows com Windows on Windows(WOW) ativado.

Os sistemas operacionais suportados por todas as edições do SQL Server são:

I Windows Server 2008 Standard ou superior

I Windows Server 2003 Sfandard SP2 ou superior

Os sistemas operacionais suportados por SQL Server Develope¡ Evaluation e Expresssão:

I Windows XP Professional SP2 ou superior

I Windows Vista Home Basic ou superior

O SQL Server Express também é suportado em:

r Windows XP Home Edition SP2 ou superior

r Windows XP Home Reduced Media Edition

r Windows XP Tablet Edition SP2 ou superior

I Windows XP Media Center 2002 SP2 ou superior

I Windows XP Professional Reduced Media Edition

r Windows XP Professional Embedded Edition Feature Pack2007 SP2

r Windows XP Professional Embedded Edition para Point of Service SP2

r Windows Server 2003 Small Business Server Standard Edition R2 ou superior

¡är DICA DE EXAME\t¡-rlçø/O SQL Server 2008 não é suportado no Windows Server 2008 Server Core. O Windows Server2008 Server Core não é suportado porque o .NET Framework não é suportado no Server Core.O SQL Server 2008 conta com os recursos do .NET Framework para suportar tipos de dadosFILESTREAM, SPATIAL e DATE, junto com vários recursos adicionais.

Page 40: Livro_SQL

Requisitos de softwareO SgL Server 2008 exige o .NET Framework 3.5. Embora arolina de instalação instaleas versões necessárias do .NET Framework, você precisa ter o Windows Installer 4.5 nocomputador antes da instalação do SQL Server.

IMPORTANTE .NET FrameworK

O NET Framework 2.0 inclui o Windows lnstaller 3.1-; portanto, se você já tiver o .NET Fra-mework 2.0 instalado, atenderá os requisitos mínimos. Contudo, para minimizar o tempo exigi-do para a instalação, recomenda-se instalar na máquina todas as versöes do .NET Framework,até a versão 3.5, antes de instalar o SQL Server.

Capítulo L r lnstalação e Configuração do SQL Server 2008

A rotina de instalaçáo do SQL Server também exige:

l Microsoft Data Access Components (MDAC) 2.8 SPI ou superior

r Shared memory Named pipes ou suporte pararede TCP/IP

I Internet Explorer 6 SP1 ou superior

t'teste rápido

1. Que ediçáo do Windows Server 2008 não é suportada para instalações do SQL

Server 2008?

2. guais sistemas operacionais são suportados por todas as edições do SQL Ser-

vet?

Respostas

1. O Windows Server 2008 Server Core não é suportado para instalações do SQL

Server 2008.

2. Windows Server 2003 Standard SP2 ou superio¡ Windows Server 2008 Stan-dard RCO ou superior.

39

PRÁTlcA Verificando os requisitos mínimosNos exercícios a seguiq você vai verificar se sua máquinamos de hardware, sistema operacional e software de apoioServer.

Neste exercício, você vai verificar se o seu computador saúsfaz os requisitos mínimos de

hardware e sistema operacional para instalar o SQL Server 2008.

1. Clique em Iniciar, clique com o botão direito do mouse em Meu Computador e sele-cione Propriedades.

2. Na guia Geral, em Sistema, verifique se seu sistema operacional satisfaz os requisi-tos mínimos.

safisfaz os requisitos mÍni-parauma instalaçáo de SQL

Page 41: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

5. Na guia Geral, em Computador, verifique se seu computador saúsfaz os requisitosmínimos de hardware.

I

Neste exercício, você vai verificar se tem o software de apoio apropriado instalado.

1. Clique em Iniciar e, em seguida, selecione Painel de Controle.

2. Clique duas vezes em Adicionar/Remover Programas.

3. Se "Microsoft .NET Framework 3.5" aparccer na lista, o seu sistema está de acordocom as exigências.

4. Verifique se você tem a versão mínima do Windows Internet Explorer executando ospassos a seguir:

a. Clique em Iniciar e, em seguida, selecione Executar.

b. Digite regedit na caixa de texto.

c. Quando o RegistryEditor abrir, navegue no painel denavegaçáo atéHKEY_LOCAL_MACHINE\So fnvare\Microsoft\Internet Explorer.

d. Verifique a versão do Internet Explorer na chave Version.

5. Verifique se você tem a versão mínima de MDAC instalada executando os passos aseguir:

a. Clique em Iniciar e, em seguida, selecione Executar.

b. Digite regedit na caixa de texto.

c. Quando o Registry Editor abrir, navegue no painel de controle atéHKEY_LOCAL_MACHINE\So ftware\Microso ft\DataAcce ss.

a. Veriflque a versão de MDAC na chave FulllnstallVer.

Resumo da lição

I O SQL Server 2008 é suportado em sistemas operacionais de 32 e de 64 bits.

I Você pode instalar todas as edições do SQL Server 2008 no Windows Server 2OOS

Standard Edition SP2 e superior ou no Windows Server 2008 Standard e superior.

I Você náo pode instalar o SQL Server 2008 no Windows Server 2008 Server Core.

Revisão da lição

Responda as perguntas a seguir para testar seu conhecimento sobre a Lição 1. As per-guntas também estão disponíveis no CD do livro (em inglês) se você preferir revisá-lasem formato eletrônico.

Page 42: Livro_SQL

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" nofinal do livro.

1. Você está implantando um novo servidor dentro da Wide World Importers, que exe-culará, uma instância do SQL Server 2008 para suportar um novo aplicativo. porcausa do suporte ao recurso necessário, você vai instalar o SQL Server 2008 Enter-prise. Quais sistemas operacionais suportaráo sua instalaçáo? (Escolha todas asrespostas que se aplicam.)

A. Windows 2000 Server Enterprise SP4 ou superior

B. Windows Server 2003 Enterprise

C. Windows Server 2003 Enterprise SP2

D. Windows Server 2008 Enterprise

2. Yocê está implantando o SQL Server 2008 Express para suportar um novo aplica-tivo baseado na Web que permitirá aos clientes fazer pedidos diretamente da CohoVineyard. Qual sistema operacional NÃO suporta sua instalação?

A. Windows XP Home Edition SP2

B. Windows Server 2008 Server Core

C. Windows Server 2003 Enterprise SP2

D. Windows XP Tablet Edition Sp2

Capítulo 1 r lnstalação e Configuração do SQL Server 2008 4t

Page 43: Livro_SQL

42 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Lição 2: Selecionando ediçöes do SQL ServerO SQL Server 2008 esfâ disponível em várias edições, variando desde edições proje-íadas para aplicações móveis e incorporadas, com âtea de cobertura muito pequena,até edições projetadas paralidar com petabytes ou dados manipuiados por milhões de

usuários concomitantes. Esta lição explica os serviços disponíveis dentro da plataformade banco de dados SQL Server 2008 e as diferenças entre as edições do SQL Server.

Após esta lição, você será capaz de:

I Entender as diferenças entre SQL Server 2008 Enterprise, Workgroup, Standard e

Express

I Entender o papel de cada serviço contido na plataforma de dados SQL Server 2008

Tempo estimado para a lição:20 minutos

Serviços do SQL Server

O SQL Server 2008 é muito mais do que um simples banco de dados utilizado para

armazenar dados. Dentro da plataforma de dados SQL Server 2008 existem vários servi-

ços que podem ser usados para construir qualquer aplicativo concebível dentro de umaempresa.

Dentro do mecanismo de banco de dados centrai, você encontrará serviços paÍa atma-zenar, manipular e lazer backup e restaurar dados. O mecanismo de banco de dadoscentral também contém recursos de segurança avançados para proteger seus investi-mentos, junto com serviços paragaraîlir amé.xima disponibilidade. Sua infraestruturade dados pode ser ampliada para manipular texto não estruturado, junto com o sincro-nismo de várias cópias de um banco de dados. Muitos desses recursos serão discutidosem capítulos subsequentes neste livro.

Service BrokerO Service Broker Íoi introduzido no SQL Server 2005 para fornecer um sistema de

enfileiramento de mensagens integrado na plataforma de dados SQL Server. Com base

em mensagens definidas pelo usuário e em ações de processamento, você pode usaro Service Broker para fornecer recursos de processamento de dados assíncronos. oService Broker náo é apenas um sistema de enfileiramento de mensagens competente;com ele, você também pode fornecer capacidade de processo empresarial avançada,manipulando processamento de dados entre um grande número de plataformas, tudoisso sem exigir que o usuário espere que o processo termine nem que seja afetado de

qualquer outra forma.

SQL Server Integration ServicesO SQL Server Integration Services (SSIS) apresenta todos os recursos corporativos que

você pode encontrar em aplicações de ETL (Extract, Transform, and Load - extração,transformaçã o e carga) , ao passo que também permite às empresas construir aplicativos

Page 44: Livro_SQL

que podem gerenciar bancos de dados e recursos de sistema, responder a eventos debanco de dados e sistema, e aÍé interagir com os usuários.

O SSIS tem uma variedade de tarefas que permitem aos pacotes fazer upload ou downloadde arquivos de sites FTP (File Transfer Protocol), manipular arquivos em diretórios, impor-tar arquivos para bancos de dados ou exportar dados para arquivos. O SSIS também podeexecutar aplicativos, interagir com Web services, enviar e receber mensagens de MSMQ(Microsoft Message Queue) e responder a eventos de WMI (Windows Management Instru-mentation). Contêineres permitem ao SSIS executar tarefas inteiras e fluxos de trabalhodentro de um loop, com uma variedade de entradas de um contador simples para arquivosem um diretório ou entre os resultados de uma consulta. São incluídas tarefas especiali-zadas para copiar objetos do SQL Server em um ambiente, assim como pa:ra. gercnciarba-ckups de banco de dados, reindexação e outras operações de manutenção. Se o SSIS nãocontiver umatarefajâproletadaparaatender suas necessidades, você pode escrever seuspróprios processos usando o Visual Studio Tools for Applications ou mesmo projeiar suaspróprias tarefas personalizadas, que podem ser registradas e utilizadas dentro do SSIS.

Constraints de precedência permitem configurar os fluxos de trabalho operacionais maiscomplicados, onde o processamento pode ser direcionado com base no fato de um com-ponente ser bem-sucedido, falhar ou simplesmente concluir a execução. Além do rote-amento estático baseado no status da conclusão, você pode combinar expressões paratornar os caminhos de fluxo de trabalho condicionais. Rotinas de tratamento de eventopermitem executar fluxos de trabalho inteiros em resposta a eventos que ocorrem emnível de pacote ou de tarefa, como a execução automâÍica de um fluxo de trabalho paramover um arquivo para um diretório quando não puder ser processado, registrar os de-talhes do erro e enviar um e-mail para um administrador.

Configurações de pacote permitem aos desenvolvedores expor propriedades internas deum pacote, de modo que elas podem ser modificadas para os vários ambientes nos quaisum pacote será executado. Expondo propriedades em uma configuração, os administra-dores têm uma maneira simples de reconfigurar um pacote, como a mudança dos nomesou diretórios do servidor de banco de dados, sem a necessidade de editar o pacote.

Além das tarefas de fluxo de trabalho, o SSIS vem com muitos componentes de movi-mentação e manipulaçáo de dados. Embora seja possível simplesmente mover dados deum lugar para outro dentro de uma tarefa de fluxo de dados, você também pode aplicaruma ampla variedade de operações nos dados, à medida que eles se movem pelo me-canismo. Você pode apagar dados inválidos, efetuar cálculos extensos e converter tiposde dados, à medida que os dados se movem em um fluxo. Fluxos de dados de entradapodem ser divididos paravârios destinos com base em uma condição. A tarefa de fluxode dados (data flow) tem a capacidade de rcalizar pesquisas de dados entre origens paravalidar dados de enftada ou para incluir informações adicionais à medida que os dadossão enviados para um destino. Fuzzy lookups e fuzzy grouping podem ser apiicadospara possibilitar recursos de correspondência e agrupamentos muito flexíveis, além desimples curingas. Vários fluxos de dados de entrada podem ser combinados para seremenviados para um único destino, Assim como vários fluxos de entrada podem ser com-binados, você também pode pegar um único fluxo de dados e enviar para vários desti-nos. Dentro de uma tarefa de fluxo de dados do SSIS, você também pode fazer um novo

Capítulo L t lnstalação e Configuração do SQL Server 2008 43

Page 45: Livro_SQL

44 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

mapeamento dos caracteres, agrupar e desagrupar o conjuntos de dados, calcular agre-gados, classificar dados, rcalizar amostragem de dados e executar mineraçáo no texto.Se o SSIS náo tem um adaptador de dados capaz de manipular o formato de sua origemou destino de dados ou náo tem uma transformação compatível com a\ógica que vocêprecisa realizar, é incluído um componente de script que permite produzir os recursoscompletos do Visual Studio Tools for Applications para suportar seus dados.

SQL Server Reporting ServicesEmpresas de todos os tamanhos precisam ter acesso consistente e padronizado às vas-tas quantidades de dados armazenados por toda a organizaçáo. Embora fosse ótimo es-

perar que todos soubessem escrever consultas com base em origens de dados para obteros dados necessários ou ter desenvolvedores disponíveis para escrever interfaces como usuário para todos os dados necessários, a maioria das empresas não dispõe desses

recursos. Portanto, é preciso que exista ferramentas para criat relatórios padronizadosque estejam disponíveis para loda a empresa, assim como é necessário fornecer aosusuários acapacidade de construir relatórios segundo as necessidades.

O SQL Server Reporting Services (SSRS) preenche alacuna do fornecimento de dados,providenciando uma pla:,aforma flexível paraprojetar relatórios, assim como para distri-buir dados em uma empresa. O departamento de TI pode construir relatórios complexosrapidamente, os quais são instalados em um ou mais portais que podem ser acessadosde acordo com regras de segurança flexíveis. O departamento de TI também pode proje-tar e publicar modelos de relatório que permitam aos usuários construir seus própriosrelatórios sem a necessidade de entenderem as complexidades subjacentes de um bancode dados. Os relatórios construídos pelo departamento de TI, assim como pelos usuá-rios, podem ser implementados em um portal de relatórios centralizado que permita aosmembros da empresa acessar as informações de que precisam para seus trabalhos.

Os usuários podem acessar relatórios gerados dinamicamente ou exibidos a parlir de

dados colocados em cache que sáo atualizados de acordo com um cronograma. Os usuá-rios também podem configurar assinaturas em um rclatório que permitam ao SSRS de-finir uma agenda para execular o relalóño e, enláo, enviá-lo para os usuários em seuscanais de distribuiçáo preferidos, formatado de acordo com suas especificações. Porexemplo, um gerente de vendas pode criar uma assinatuÍa para um relatório de vendasdiârias, de modo que o relatório seja gerado à meia-noite, depois de concluídas todas as

atividades de vendas, apresentálo no formato PDF (Portable Document Format) e deixâ-lo em sua caixa de entrada de e-mail para examinar de manhã.

O SSRS vem com dois componentes principais: um servidor de relatório e um projetistade relatório (report designer).

O servidor de relatório é responsável por conter todos os relatórios e aplicar segurança.

Quando os relatórios sáo necessários, o servidor de relatório é responsável por se conec-tar às origens de dados subjacentes, reunir dados e apresentar o relatório na saída final.A apresentaçáo de um relatório ê feita a pedido de um usuário ou por intermédio de

uma larefa agendada que permita ao relatório ser executado fora dos horários de pico.

Para que o servidor de relatório tenha tudo que precisa ser enviado aos usuários, primei-ro os relatórios precisam ser criados. O projetista de relatório é responsável por todas as

Page 46: Livro_SQL

atividades envolvidas na criaçâo e depuração de relatórios. São incluídos componentesque permitem aos usuários criar rcLatórios tabulares ou em forma matricial simples erelatórios mais complexos, com vários níveis de sub-relatórios, relatórios aninhados,gtâfr,cos, relatórios vinculados e vínculos para recursos externos. Dentro de seus relató-rios, você pode incorporar cálculos e funções, combinar tabelas e até variar a saída doreTatório com base no usuário que o está acessando. O projetista de relatório tambémé responsável por projetar modelos de relatório que fornecem uma camada semânticapoderosa, que oculta dos usuários as complexidades de uma origem de dados, para que

eles possam se concentrar na construçáo dos relatórios.

SQL Server Analysis Services

Quando o volume de dados dentro de uma empresa aumenta muito, você precisa im-plantar ferramentas que permitam aos usuários tomar decisões empresariais quaseem tempo real. Os usuários não podem mais esperar que o departamento de TI projeterelatórios para as centenas de perguntas que podem ser feitas por um único usuário.Ao mesmo tempo, o departamento de TI não tem os recursos necessários para fotne-cer as centenas de relatórios necessários para permitir que as pessoas gerenciem umnegócio.

O SQL Server Analysis Services (SSAS) foi criado para preencher a lacuna entre as ne-

cessidades de dados de usuários empresariais e a capacidade do departamento de TI de

fornecer dados. O SSAS contém dois componenles: OLAP (Online Analytical Processing)eData Mining.

O mecanismo OLAP permite implanta¡ consultar e gerenciar cubos projetados no BIDS(Business Intelligence Development Studio). Você pode incluir várias dimensões e váriashierarquias dentro de uma dimensáo, e escolher uma variedade de opções, como quaisatributos estão disponíveis para exibiçáo e como os membros são classificados. Medidaspodem ser projetadas como elementos aditivos simples, assim como o emprego de com-plexos esquemas de agregação definidos pelo usuário. KPIs (Key Performance Indicators)podem ser adicionados, os quais fornecem filas visuais para os usuários sobre o estadode uma entidade empresarial. Os cubos podem conter perspectivas que definem um sub-conjunto de dados dentro de um único cubo para simplificar a visualização. A camada de

metadados interna permite especificar traduções de idioma em quaiquer nível dentro de

um cubo, de modo que os usuários podem procurar dados em seu idioma nativo.

o mecanismo Data Mining amplia a análise empresarial para permitir que os usuáriosencontrem padrões e façam previsões. Utilizando qualquer um dos vários algoritmos de

extraçáo que acompanham o SQL Server, as empresas podem examinar tendências de

dados com o passar do tempo, determinar quais fatores influenciam decisões de compraou mesmo reconfigurar uma experiência de compra com base nos padrões de aquisiçáopara maximizan o polencial de uma venda.

Capítulo L r lnstalação e Configuração do SQL Server 2008 45

MAls INFoRMAçöES Serviços do SQt Server

Para uma discussão detalhada sobre cada recurso disponível dentro da plataforma de dadosSQL Server 2008, consulte o livro Microsoft SQL Server 2008 Passo q Pqsso (Bookman, 201-0).

que fornece capítulos de visão geral sobre cada recurso do SQL Server 2008.

Page 47: Livro_SQL

46

Ediçöes do SQL Server

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

O SQL Server 2OO8 estâ disponível nas seguintes edições:

I Enterprise Projetada para grandes empresas e para aqueles que precisam apro-veitar o poder total da plataforma SQL Server 2008.

I Standard Prcjetada para empresas pequenas e médias que náo precisam de todosos recursos disponíveis no SQL Server 2008 Enterprise.

r Workgroup Conveniente para pequenos projetos departamentais com um con-junto de recursos limitado.

r Express Uma versão grauJilamente redistribuível do SQL Server, projetada pantratar das necessidades de aplicativos incorporados, assim como das necessidadesbásicas de armazenamento de dados para aplicativos baseados em servidor, comoos aplicativos Web, com um pequeno número de usuários.

I Compact Projetada como um banco de dados incorporado.

r Developer Projelada para uso por desenvolvedores na criaçâo de aplicativos SQLServer. O SQL Server 2008 Developer tem todos os recursos e capacidades do SQLServer 2008 Enterprise, exceto que náo pode ser ufilizado em um ambiente de pro-dução.

I Evaluation Projetada para permitir que as empresas avaliem o SOL Server 2008.O SQL Server 2008 Evaluation tem todos os recursos e capacidades do SQL Server2008 Enterprise, exceto que náo pode ser utilizado em um ambiente de produção e

expira após 180 dias.

NOTA Edições do SQL Server

A edição Developer do SQL Server é projetada para desenvolvedores criarem novos aplicati-vos SQL Server. A edição Evaluation do SQL Server é projetada para permitir que as empresasavaliem os recursos disponíveis no SQL Server. Tanto a edição Developer como a Evaluationcontêm a mesma funcionalidade da edição Enterprise do SQL Server; a única exceção é que as

edições Developer e Evaluation não têm licença para execução em um ambiente de produção.Para os objetivos deste livro, discutiremos apenas as edições que podem ser implantadas emambientes de produção: Express, Workgroup, Standard e Enterprise.

As principais diferenças entre as edições do SQL Server estáo no hardware e no conjuntode recursos suportados. As tabelas a seguir fornecem uma visáo geralbâsica das dife-renças entre as edições nasvârias áneas.

Tabela 1-2 Suporte para hardware

No de CPUs

Tamanho do banco de dados llimitado

Memória RAM llimitada

llimitado

llimitada

4GB

1GB

4GB

1. GB

Page 48: Livro_SQL

Tabela 1-3 Suporte para mecanismo de banco de dados

SQL Server Management Sim

Studio

Pesquisa de texto Simcompleta (full text search)

Particionamento

Capítulo L r lnstalação e Configuração do SQL Server 2008

Operaçöes em paralelo

Várias instâncias

Snapshots de bancode dados

Bancos de dadoscompartilhadosescalonados

Não

Views indexadas

Sim

Não

Compactação de log

16

Sim

Cluster

Não

Espelhamento de banco Thread único Nãode dados (database

mirroring)

Não

Downloadseparado

Não

Operações online

16

Apenas serviços Nãoavançados

Resource Governor

Não

Não

Compactação de backup Não

Não

Não

Não

Adição de memória/CPUa quente

Não

47

2 n6s

t6

Criptografia de dados

Não

Não

Não

Não

Não

Não

Captura de alteraçãode dados (change datacapture)

Não

Não

Não

L6

Não

Não

Compactação de dados Não

Não

Gerenciamento baseadoem diretivas

Não

Não

Não

Limitada

Não

Não

Coleta de dados dedesempenho

Não

CLR

Não

Não

Não

XML

Limitada

Não

Não

Dados espaciais

Não

Não

Sim

Limitada

Não

Não

Sim

Não

Não

Nativa

Não

Não

Somentebaseada emsenha

Não

Nativa

Não

Não

Nativa Armazenadacomo texto

(continuo)

Page 49: Livro_SQL

48 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Tabela 1-3 Suporte para mecanismo de banco de dados (continuoçõo)

Stored procedure,triggers e views

Replicação commesclagem (mergereplication)

Replicaçãotransacional Sim

Tabela 1-4 Suporte para SSIS

Sim

Sim

Assistente de importação/exportação

Projetista de pacote

Sim

Mineração de dados

Sim

Agrupamento/pesquisa vaga(fuzzy grouping/lookup)

Mineração/pesquisa de termos(term extraction/looku p)

Somenteassinante

Processamento de OLAP

Somenteassinante

Tabela 1-5 Suporte para SSRS

Sim

Somenteassinante

lntegração com MicrosoftOffice

Sim

Somenteassinante

Não

Construtor de relatório(report builder)

Sim

Não

Relatório de expansão(scale-out report)

Sim

Não

Não

Assinaturas baseadas em dados Não

Não

N/D

Tabela 1-6 Suporte para SSAS - OLAP

Não

N/D

Sim

N/D

Medidas/dimensöes vinculadas Não

N/D

N/D

Perspectivas

Sim

Cubos particionados

N/D

N/D

Sim

Não

N/D

N/D

N/D

Sim

N/D

Somente serviços N/Davançados

N/D

Não

Somente serviços N/Davançados

Não

Não

N/D

N/D

N/D

N/D

N/o

N/D

N/D

N/D

Page 50: Livro_SQL

Tabela 1-7 Suporte para SSAS - Mineração de Dados

Séries de tempo

Processamento paralelo e previsão

Algoritmos de mineração avançados Não

@ DICA DE EXAME

Capítulo L r lnstalação e Configuração do SeL Server 2008

Para o exame, você precisa entender os objetivos de projeto básicos de cada edição do SeLServer. Você também precisa conhecer as diferenças de suporte para conjunto de recursos,memória e processador entre as edições.

fteste rápido

1. Quais edições suportam o conjunto de recursos inteiro disponível dentro daplataforma de dados sQL server? Dessas ediçóes, quais não têm licença parauso em produçáo?

2. ]uais edições do sQL Server sáo projetadas como mecanismos de armazena-mento para aplicativos incorporados, com suporte limitado para hardware erecursos?

Respostas

1. As edições Enterprise, Developer e Evaluation têm o conjunto de recursos intei-ro disponÍvel dentro da plataforma de dados sol server 200g. As edições Deve,loper e Evaluation não têm licença para uso em um ambiente de produçáo.

2. As ediçoes Express e compact são projetadas como mecanismos de armazena-mento parc apTicativos incorporados e suportam apenas uma cpu, até 7 GB dememória RAM e um tamanho de banco de dados máximo de 4 GB.

Não

Não

Não

N/D

N/D

N/P

N/D

Resumo da lição

N/D

N/D

r O SQL Server 2008 esÍá, disponível nas edições Enterprise, Standard, Workgroup,Express e Compact, para uso em um ambiente de produçáo.

r Além das tecnologias de mecanismo de banco de dados central, o SeL Server 2008Enterprise suporta Service Broker para processamento assíncrono.

Revisão da liçãoResponda as perguntas a seguir pa:te.lesl.il seu conhecimento sobre a Liçáo 2. As per-guntas também estão disponíveis no CD do livro (em inglês) se você preferir revisá-lasem formato eletrônico.

Page 51: Livro_SQL

50 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" nofinal do livro.

1. A Margie's Travel está inaugurando uma nova divisão para oferecer reservas paraviagens online para seus clientes. Os gerentes esperam que o volume do trâlegoaumente rapidamente, a ponto de, em dado momento, centenas de usuários exami-narem as ofertas e fazerem reservas para viagens. A gerência também gostaria desincronizar várias cópias do banco de dados de reservas paruviagem, para suportartanto operações online como face a face. Quais edições do SQL Server 2008 seriamadequadas para a Margie's Travel implantar para sua nova presença online? (Esco-lha todas as respostas que se aplicam.)

A. Express

B. Standard

C. Enterprise

D. Compact

2. hl/rargie's Travel decidiu minimizar o custo e implantou o SQL Server 2008 Stan-datd para suportar a nova divisão online. Após um lançamento de sucesso, osgerentes estáo com dificuldade para gerenciar as operações empresariais e preci-sam implantar análise avançada. Um novo servidor com SQL Server será instalado.Qual edição do SQL Server precisa ser instalada no novo servidor para suportar aanálise de dados necessária?

A. SOL Server 20OSStandard

B. SQL Server 2008 Express com Advanced Services

C. SQL Server 2008 Worþroup

D. SqL Server 2008 Enterprise

Page 52: Livro_SQL

Lição 3: lnstalando e configurandoinstâncias do SQI Server

Nesta liçáo, você vai aprender a criar e configurar contas de serviço que serão utiliza-das para executar os serviços do SQL Server que foram instalados. Você também vaiconhecer as configurações de modo de autenticação e collation (intercalação) que sáoespecificadas quando uma instância é instalada. Por fim, você vai aprender a configarare gerenciar serviços do SQL Server após a instalação.

Capítulo 1 r lnstalação e Configuração do SQL Server 2008

Após esta lição, você será capaz de:I Criar contas de serviço

I lnstalar um SQL Server 2008

I Entender as sequências de collation

I Entender os modos de autenticação

I lnstalar exemplos de bancos de dados

I Configurar uma instância do SQL Server

Tempo estimado para a lição:40 minutos

Contas de serviçoTodos os componentes básicos do SQL Server sáo executados como serviços. Para confi,garat cada componente corretamente, você precisa criarvârias contas de serviço antes dainstalação. Você precisa de contas de serviço exclusivas para os seguintes componentes:

I Database Engine

r SQL ServerÄgent

A conta de serviço utilizada para cada serviço do SQL Server não apenas permite queo SQL Server forneça serviços de dados e agendamento pa:ia os aplicativos, mas tam-bém define um limite de segurança. O mecanismo do SQL Server exige acesso a muitosrecursos em um computado¡ como memória, processadores, espaço em disco e rede.Contudo, o serviço do SQL Server ainda estâ em execuçáo dentro da estrutura de segu-rança fornecida pelo Windows. O SQL Seryer é capaz de acessar apenas os recursos doWindows para os quais a conta de serviço recebeu permissões.

51

NOTA Segurança do SQL Server

A segurança do SQL Server será discutida com mais detalhes no Capítulo 1-1-, "Projetando asegurança do SQL Server".

NOTA Versão de sistema operacional

Utilizei o Windows XP Professional SP2 para todos os exercícios deste livro. Você precisará fazeros ajustes apropriados para a versão do Windows que estiver usando. Além disso, se sua má-quina for membro de um domínio, suas contas de serviço deverão ser contas de domínio, nãocontas locais, ao instalar o SQL Server 2008 em qualquer ambiente operacional.

Page 53: Livro_SQL

s2 Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

Sequências de collationAs sequências de collation controlam o modo como o SQL Server trata dados alfanu-méricos para operações de armazenamento, recuperação, classificação e comparação. oSQL Server 2008 permite especificar uma sequência de collation para suportar qualqueridioma atualmente usado no mundo.

As sequências de collation podem ser especificadas nos níveis de instância, banco dedados, tabela e coluna. A única sequência de collation que é obrigatória é. definida emnível de instância, que tem como padrão todos os outros níveis, a não ser que sejamespecificamente cancelados.

Uma sequência de collation define o conjunto alfanumérico suportado, incluindo di-ferenciação de letras maiúsculas e minúsculas, acentos e kana. por exemplo, se vocêufilizar a sequência de collation sgl_Latinl_General_cp1_cl_Al, obterâ suporte paraum conjunto alfanumérico da Europa Ocidental que não diferencia letras maiúsculase minúsculas e acentos. SQr_Latinl_General_Cp1_CI_AI tratae, E, è, é, ê, e ë como sefossem o mesmo caractere para operações de classificaçáo e comparação, enquanto umasequência de collation francesa, que diferencia letras maiúsculas e minúsCulas (CS) eacentos (AS), trata cada uma delas como um caractere diferente.

NOTA Sequências de collation

Você vai aprender mais sobre sequências de collation no Capítulo 2, "Configuração e manu-tenção de banco de dados".

Modos de autenticaçãoUma das opções de configuração de instância que você precisa definir durante a instala-çáo é o modo de autenticação utilizado pelo SQL Server para controlar os tipos de loginspermitidos. você pode definir o modo de autenticação para o sel Server como:

I Windows Only (segurança integrada)

r Windows and SOL Server (modo misto)

Quando o sQL server é configurado com autenticação somente para windows, vocêpode usar apenas contas do Windows pan fazer login na instância do SOL Server.Quando o SQL Server é configurado no modo misto, você pode usar contas do Windowsou contas criadas no sQL server panfazer login na instância do sel server.

NOTA Logins

Os logins serão discutidos com mais detalhes no Capítulo 1_1_.

Page 54: Livro_SQL

lnstâncias do SQL ServerAs instâncias do SQL Server definem o contêiner para todas as operações efetuadasdentro do SQL Server. Cada instância contém seu próprio conjunto de bancos de dados,credenciais de segurança, ajustes de configuração, serviços do windows e outros obje-tos do SQL Server.

o sQL server 2oo9 aceita a instalação de até.50 instâncias no sel server em umaúnica mâquina. você pode instalar uma instância como padr-ao, junto com até 49instâncias nomeadas adicionais, ou pode instalar 5O instâncias nomeadas, sem ne-nhuma padrã,o.

Ao conectar uma instância padráo do sel server, você utiliza o nome da mâ,quina na qual a instância está instalada. ,\o conectar uma instância nomea-da, você usa a combinaçáo do nome da máquina e nome da instância, como em< nomemcíquína >\< no meíns tâncía > .

os principais motivos para se instalar mais de uma instância do SQL Server em umaúnica máquina são:

r Você precisa de instâncias para testes de garantia de qualidade ou desenvolvimento.

r Você precisa dar suporte paravâúos níveis de pacote de serviço ou correção.

r Você tem diferentes grupos de administradores que podem acessar apenas um sub-conjunto dos bancos de dados dentro de sua empresa.

r você precisa dar suporte para vários conjuntos de opções de configuração do selServer.

Capítulo 1 r lnstalação e Configuração do SQL Server 2008

@ orcn DE EXAME

53

Você precisará saber como as sequências de collation afetam o modo como o SQL Server ar-mazena e manipula dados alfanuméricos.

SQL Server Configurat¡on ManagerMostrado na Figura 1- 1 , o SOL Server Configuration Manager é responsável por geren-ciar serviços e protocolos do SQL Server. As principais farefas que você executarâ são:

¡ Iniciar, parar, fazer uma pausa e reiniciar um serviço

r Alterar contas de serviço e senhas de conta de serviço

I Gerenciar o modo de inicialização de um serviço

r Configurar parâmetros de inicializaçáo de serviço

Page 55: Livro_SQL

54 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Figura 1-1 Lista de serviços dentro do SQL Server Configuration Manager.

Depois de ter concluído a instalaçáo e configuração iniciais dos serviços do SQL Server,a principal ação que você executará dentro do SQL Server Configuration Manager seráaTlerar senhas de conta de serviço periodicamente. Ao alterar essas senhas, você nãoprecisa mais reiniciar a instância do SQL Server pan que as novas configurações decredencial entrem em vigor.

CUIDADO O applet Windows Service Control

O applet Windows Service Control também tem entradas para serviços do SQL Server e per-mite alterar contas de serviço e senhas. Você nunca deve alterar contas de serviço ou senhasde conta de serviço usando o applet Windows Service Control. O SQL Server ConfigurationManager deve ser usado, pois ele inclui o código para regenerar a chave mestra de serviço queé fundamental para a operação dos serviços do SQL Server:

Embora você possa iniciar, parat, fazet uma pausa e reiniciar serviços do SQL Server, oSQL Server tem amplos recursos de gerenciamento que devem garanfir que raramenteseja (se é que será) necessário desligar ou reiniciar um serviço do SQL Server.

O SQL Server Configuration Manager tambêm permite configurar os protocolos decomunicaçáo disponíveis para conexões de cliente. Além de configurar argumentosespecíficos do protocolo, você pode controlar se é obrigatório criptografar a comuni-caçáo ou se uma instância responde a um pedido de enumeraçáo, como mostrado naFigura 7-2.

Page 56: Livro_SQL

Capítulo 1 I lnstalação e Configuração do SQL Server 2008

Figura L-2 A caixa de diálogo Protocol Properties.

NOTA Applet Windows Service Control

Os aplicativos podem difundir um comando especial, chamado de pedido de enumeração, emuma rede, para localizar os servidores com SQL Server que estejam nela. Embora a capacidadede enumerar os servidores com SQL Server seja valiosa em ambientes de desenvolvimento e

teste, onde instâncias podem aparece[ desaparecer e ser reconstruídas de forma relativamentefrequente, a enumeração não é desejável em um ambiente de produção. Desativando as res-postas de enumeração, configurando Hide lnstance como Yet você impede que alguém utilizetécnicas de descoberta para localizar servidores com SQL Server para um possível ataque.

t'teste rápido

1. Qual edição do SQL Server aceiíaa instalação de mais de uma instância de

SQL Server em uma mâquina?

2. Quais sáo os modos de autenticação com os quais o SQL Server pode ser con-figwado?

Respostas

1. Todas as edições do SQL Server aceitam várias instâncias na mesma máquina.

2. Yocê pode configurar o SQL Server para operar nos modos de autenticaçãoWindows Only ou Windows And SQL Server.

PRÁncA lnstalando e conf¡gurando uma ¡nstânc¡a do SQL Server

Nos exercícios a seguir, você vai criar contas de serviço, instalar uma instância padrâodo SQL Server e instalar o banco de dados de exemplo AdventureWorks que será usadoao longo deste livro.

Page 57: Livro_SQL

56 Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

Neste exercício, você vai criar uma conta de serviço que será usada para executar o ser-viço do SQL Server.

1. Clique em Iniciar, clique com obotã,o direito do mouse em Meu Computador e sele-cione Gerenciar.

2.

3.

4.

Expanda Usuários e grupos locais e selecione Usuários.

Clique com obotáo direito do mouse no painel da direita e selecione Novo usuário.Especifique sQL2oo8TK432DE no campo Nome de usuário, forneça uma senhaforte, desmarque a caixa de seleçáo o usuário deve alterar a senhà no próximologon e marque a caixa de seleção A senha nunca expira.

Repita os passos 3 e 4 para criar outra conta denominada sel200grK432selAgent.Repita os passos 3 e 4 para criar outra conta denominada SOL2OOSTK4J2FullText.

5.

6.

Neste exercício, você vai instalar uma instância de SOL Server.

1 . Inicie a rotina de instalação do SeL Server.

2. Se você ainda não tiver instalado os pré-requisitos do SeL Server 2OOB, a rotina deinstalaçáo instalarâ os componentes necessários.

5. Depois de instalados os pré-requisitos, você verâ a janela de instalação principal,como mostrado na Figura 1-3.

Figura 1-3 Tela de instalação principal do SeL Server.

4. Clique no link New SQL Server stand-alone Installation para iniciar a instalação doSOL Server.

Page 58: Livro_SQL

5. A instalaçáo realiza uma verificaçáo da configuraçáo do sistema. euando a verifi-cação terminar com sucesso, sua tela deverâ ser semelhanfe àFigura 1-4.

Capítulo 1 r lnstalação e Configuração do SQL Server 2008

Figura 1-4 A verificação de configuração do sistema ao terminar com sucesso.

6. Clique em OK. Selecione a edição do SQL Server que você deseja instalar. Clique emAvançar.

Clique em Avançar. Selecione os recursos, como mostrado na Figura 1-5 e, em se-guida, clique em Avançar.

7.

57

Figura 1-5 A caixa de diálogo Feature Selection.

Page 59: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

8. Na página Instance Configuration, verifique se Default Instance está selecionado e

clique em Avançar.

Examine os requisitos de espaço em disco e, em seguida, clique em Avançar.

Digite o nome das contas de serviço que você criou no Exercício 1. euando estivercompleta, a pâgina deverâ ser semelhante à Figura 1-6.

9.

10.

Figura 1-6 A guia Specifying Service Accounts da caixa de diálogo Server Configuration.

clique na guia collation para examinar a sequência de collation definida para oDatabase Engine. Faça os ajustes que achar necessários, de acordo com o suportepara o idioma exigido. Clique em Avançar.

Na página Database Engine Configuration, selecione Mixed Mode (SeL ServerAuthen-tication And windows Authentication) e defina uma senha. clique em Add currentUser para adicionar a conta do Windows sob a qual você está realizando a instalaçáocomo administrador dentro do sQL server. clique em Add para adicionar as outrascontas do Windows que você queira como administradores dentro do SeL Server.

Clique na guia Data Directories para examinar as configurações.

11.

t2.

13.

MAIS INFORMAçöES Bancos de dados e diretórios

Você vai aprender mais sobre a criação de bancos de dados, arquivos de banco de dadose diretórios no Capítulo 2.

Page 60: Livro_SQL

14. Clique na guia FILESTREAM e, em seguida, marque a caixa de seleção Enable FI-LESTREAM for Transact-SQl Access e a caixa de seleção Enable FILESTRE\M ForFile I/O Streaming Access. Deixe o nome de compartilhamento do Windows ajusta-do no padráo MSSQLSERVER. Clique em Avançar.

MAls INFORMAçÕES Tipo de dados FITESTREAM

Capítulo L r lnstalação e Configuração do SQL Server 2008

Você vai aprender mais sobre o tipo de dados FILESTREAM e a criação de tabelas noCapítulo 3, "Tabelas".

15. Selecione as opções de sua escolha napâ$naErrorAnd Usage Reporting. Clique emAvançar.

16. Examine as informações na pâgina Ready To Install. Quando estiver satisfeito, cli-que em Install.

l7 . O SQL Server inicia as rotinas de instalação para as vá,rias opções que você especi-ficou e exibe relatórios de progresso.

Neste exercício, você vai instalar o banco de dados de exemplo AdventureWorle.r, queserá usado em todo este livro para demonstrar recursos do SQL Server 2008.

NOTA Bancos de dados de exemplo

O SQL Server 2008 não vem com nenhum exemplo de banco de dados. Você precisa fazero download dos bancos de dados AdventureWorks210S e AdventureWorksDW21)S nosite CodePlex (http://www.codeplex.com).

59

7. Abra o Internet Explorer e vâ para http://www.codeplex.com/MSFTDBProdSamples.Clique na guia Releases.

Role até o final da pâgina e faça o download do arquivo AdventureWorks2O0S*.msiem sua máquina local.

2.

IMPORTANTE Rotina de instalação

O site CodePlex contém rotinas de instalação para plataformas de 32 bits, x64 e 1464. Faça

o download do arquivo msi apropriado para seu sistema operacional.

3. Execute as rotinas de instalaçáo dos dois downloads e use o local de exfiação pa-drâo.

Clique em Iniciar e, em seguida, selecione Todos os Programas, Microsoft SQL Ser-ver 2008 e SQL Server Management Studio.

Se ainda não tiver digitado, especifique o nome da máquina em que você instalou ainstância do SQL Server no exercício anterior. Clique em Connect. Sua tela deve sercomo a Figara 1-7.

4.

5.

Page 61: Livro_SQL

Kit de Treinamento MCTS (Exame70-432): Microsoft SeL Server 200g

Figura 1-7 A tela do SQL Server Management Studio.

6. Quando você expandir o nó Database, sua tela deverâ ser semelhante à Figura 1-9.

E Þrerrq(43w rû.0,1ru-rcE@b)

s à';È;; N*"*6 d DàúÉsrÐ*oBetukþwÈ Ú Þ*s.MrhpDB

Figura 1-8 lnstalando o exemplo de banco de dados Adventureworks.

.:..,:*;;;.,:.*à;;J:li;rr;1;a-.;:;;.a:ìrdi;;;.-_:::9:"5ø;9.L;rjg,!;;;r¡:r',¡$,:.¡@*útuú ;Ék l0ù66 ioe i

Page 62: Livro_SQL

Resumo da lição

I O mecanismo SQL Server e o SQL Server ,A.gent são executados como serviços eprecisam ter contas de serviço criadas com as permissões do Windows apropriadaspara poderem acessar os recursos necessários do Windows.

r O SQL Server pode ser configurado para executar sob o modo de autenticação Win-dows Only ou Windows And SQL Server.

I A sequência de collation controla como o SQL Server aÍmazena e gerencia dadosalfanuméricos.

r O SQL Server Enterprise aceita até 50 instâncias instaladas em uma única mâqui-na; contudo, todas as outras edições têm suporte para apenas 16.

Revisão da liçãoResponda as perguntas a seguir para testar seu conhecimento sobre aLiçáo 3. As per-guntas também estáo disponíveis no CD do livro (em inglês) se você preferir revisálasem formato eletrônico.

Capítulo L r lnstalação e Configuração do SQL Server 2008

NOTA Respostas

As respostas a essas perguntas e as explicações das respostas estão na seção "Respostas" nofinal do livro.

1. A Wide World Importers vai usar o novo tipo de dados FILESTREAM para armazenarimagens escaneadas de inventários de remessa. Que comando deve ser executado nainstância do SQL Server antes que os dados FILESTREAM possam ser armazenados?

A. ALTERDATABASE

B. DBCC

C. sp_corEfrgure

D. sp lllestream _coryfrgure

2. A Contoso implementou uma nova política que exige que as senhas de todas ascontas de serviço sejam alteradas a cada 50 dias. Que ferramenta os administrado-res de banco de dados da Contoso devem usar paru alÍ.ent as senhas de conta deserviço para que os serviços do SQL Server obedeçam à nova po7ítica't

A. Applet Windows Service Control

B. SQL Server Management Studio

C. QL Server Configuration Manager

D. SQL Server Surface Area Configuration Manager

61

Page 63: Livro_SQL

62 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Lição 4: Configurando o Database MailO Database Mail fornece um recurso de notificação para instâncias do SQL Server. Nestalição você vai aprender sobre os recursos do Database Mail e a configutâ-lo dentro deuma instância do SQL Server 2008.

Após esta lição, você será capaz de:

I Configurar o Database Mail

I Enviar mensagens usando o Database Mail

Tempo estimado para a lição:30 minutos

Database MailO Database Mail permite que um computador com SQL Server envie mensagens de cor-reio. Embora as mensagens possam conter os resultados de consultas, o Database Mailé usado principalmente para enviar mensagens de alerta para os administrado res, paranotificá-los sobre condições de desempenho ou alterações feitas em objetos.

o Database Mail foi adicionado no SQL Server 2005 como um substituto do SQL Mail.Os motivos da substituiçâo foram muito simples:

r Eliminar a dependência da Microsoft Mail Application Programming Interface(MAPr)

r Simplificar a configuração e o gerenciamento

r Fornecer uma maneirarâpida e confiável para enviar mensagens de correio

O Database Mail usa o serviço de retransmissão SMTP (Simple Mail Transfer Protocol),que está disponível em todas as máquinas Windows, para transmitir mensagens de cor,reio. Quando um envio de correspondência é iniciado, a mensagem, junto com todas assuas propriedades, ê.rcgistrada em uma tabelano banco de dadosMsdb. Periodicamen-te, é executada uma tarefa de segundo plano que é gerenciada pelo SeL Server Agent.Quando o processo de envio de correspondência é executado, todas as mensagens den-tro da fila de envio que ainda não foram encaminhadas são selecionadas e enviadasusando o perfil de correio apropriado.

Os perfis formam o elemento central dentro do Database Mail. Determinado perfil podeconter várias contas de e-mail para fornecer um recurso de failover, no caso de umservidor de correio específico estar indisponível. As contas de correio definem todas aspropriedades associadas avma conta de e-mail específica, como o endereço de e-mail, oendereço para resposta, o nome do servidor de correio, o número da porta e credenciaisde autenticação.

Você pode fotnaÍ seguro o acesso a um perfil de correio para restringir a capacidade dousuário de enviar correspondência por meio de determinado perfil. Quando um perfilé criado, você pode configurá-lo como público ou privado . Um pe5frl público pode seracessado por qualquer usuário com capacid ade para enviar correspondên cia. Um pe5frl

Page 64: Livro_SQL

prívado só pode ser acessado pelos usuários a quem foi concedido explicitamente acessoao perfil de correio.

Além de configurar um perfil de correio como público ou privado, você pode designarum perfil de correio como padrão. Ao se enviar correspondência, se um perfil de correionão for especificado, o SQL Server usará o perfil de correio designado como padrão paraenviar a mensagem.

DICA Enviandocorrespondência

O Database Mail utiliza os serviços do SQL Server Agent para enviar mensagens como um pro-cesso de segundo plano. Se o SQL Server Agent não estiver em execução, as mensagens serãoacumuladas em uma fila dentro do banco de dados Msdb.

Capítulo L r lnstalação e Configuração do SQL Server 2008 63

t't"rt" rápido

1. Quais são os dois componentes básicos do Database Mail?

2. Quais são os dois tipos de perfis de correio que podem ser criados?

Respostas

1. O Database Mail usa perfis de correio que podem conter uma ou mais contasde correio.

2. os perfis de correio podem ser configurados como públicos ou privados.

PRÁTIcA Configurando o Database MailNeste exercício, você vai configurar o Database Mail e enviar uma mensagem de correiode teste.

1. Abra o SQL Server Management Studio, conecte em sua instância de SQL Server eclique em New Query pan abrir uma nova janela de consulta e execute o código aseguir paru ativar o recurso Database Mail:

EXEC sp_confìgure'Database Mail XPs',1c0RECONFICURE hfITH OVERRTDE

GO

2. Dentro do Object Explorer, abra o nó Management, clique com o botáo direito domouse em Database Mail e selecione Configure Database Mail.

3. Clique em Avançar na tela de boas-vindas.

4. Selecione Set Up Database Mail By Performing The Following Tasks e clique emAvançar.

5. Especifique um nome para seu perfil e clique no botão Add para especificar configu-rações para uma conta de correio.

Page 65: Livro_SQL

64 Kit de Treinamento MCTS (Exame70-432): Microsoft SeL Server 200g

6. Preencha os campos Account Name, E-mail Address, Display Name, Reply E-mail eServer Name.

7. selecione o modo de SMTp Authentication apropriad o para sua empresa e, se es-tiver usando autenticaçáo Basic, especifique o nome de usuário e a senha. suasconfigurações devem ser semelhantes à Fi.qura 1-9.

Figura 1-9 Configurando o Database Mail.

NOTA Configuraçöes do Database Mail

Estou usando minha conta de e-mail na lnternet e omiti intencionalmente os camposserver Name, user Name e password na Figura L-9. Você precisa especificar pelo menos ocampo Server Name, se estiver usando um servidor de correio interno.

8.

9.

Clique em OK e, em seguida, clique em Avançar.

Marque a caixa de seleção na coluna pubric ao lado do perfil que você acabou decriar e configure esse perfil como yes na coluna Default profile. clique em Avançar.

Examine as configurações na pâgina configure system parameters. clique emAvançar.

Clique em OK e, em seguida, clique em Avançar. Clique em Concluir.

A última pá,gina deve mostrar que todas as quatro etapas de configura çã,o roramconcluídas com sucesso. Clique em Fechar.

Clique com o botáo direito do mouse em Database Mail e selecione Send Test E-mail.

selecione o perfil do Database Mail que acabou de criaç digite um endereço de e-mail na iinha To e clique em send Test E-Mail, como mostraão na Figura 1-10.

vá para seu cliente de e-mail e verifique se você recebeu a mensagem de teste.

10.

tt.t2.

15.

14.

15.

Page 66: Livro_SQL

Capítulo L r lnstalação e Configuração do SQL Server 2008

Figura 1-10 Enviando uma mensagem de correspondência de teste.

DICA Enviandocorrespondênc¡a

O Database Mail utiliza os serviços do SQL Server Agent para enviar mensagens como umprocesso de segundo plano. Se o SQL Server Agent não estiver em execução, as mensa-gens serão acumuladas em uma fila dentro do banco de dados Msdb.

Resumo da lição

r O Database Mail é usado para enviar mensagens de correio a part¡ de uma instân-cia do SQL Server.

I Para enviar mensagens de correio, o SQL ServerAgent deve estar em execuçáo.

r Um perfil de correio pode conter uma ou mais contas de correio.

I Você pode criar perfis de correio públicos ou privados.

r O perfil de correio designado como padrão será usado para enviar mensagens decorreio, caso um perfil não seja especificado.

Revisão da lição

Responda as perguntas a seguir para testar seu conhecimento sobre a Lição 4. As per-guntas também estáo disponíveis no CD do livro (em inglês) se você preferir revisá-lasem formato eletrônico.

65

NOTA Respostas

As respostas a essas perguntas e as explicações das respostas estão na seção "Respostas" nofinal do livro.

1. Como parte da implementação do novo sistema de reservas baseado na Web daMargiels Travel, os clientes devem receber avisos quando uma reserva para viagem

Page 67: Livro_SQL

66 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

tiver sido salva com êxito. Quais tecnologias ou recursos os desenvolvedores da

Margie's Travel podem usar para implementar notificações? (Escolha todas as res-

postas que se aplicam.)

A. Notification Services

B. Database Mail

C. Bibliotecas de código do Microsoft Visual Studio.NET

D. Activity Monitor

2. Os desenvolvedores da Margie's Travel decidiram :uliTizar o Database Mail para

enviar mensagens aos seus clientes. A capacidade de enviar mensagens de cor-

reio através de determinado perfil precisa ser restrita, mas não deve exigir que

um usuário aprovado especifique um perfil de correio ao enviar mensagens. Quaisconfigurações precisam ser feitas para saÍisfazer esses requisitos? (Escolha todas

as respostas que se aplicam.)

A. Definir o perfil de correio como público.

B. Definir o perfil de correio como privado.

C. Definir o perfil de correio como privado e conceder acesso aos usuários apro-vados.

D. Designar o perfil de correio como padráo.

Page 68: Livro_SQL

Revisão do capítuloPararcforçat o que aprendeu neste capítulo, você pode:

r Ler o resumo do capítulo.

I Examinar a lista de termos-chave introduzidos neste capítulo.

r Completar o cenário de caso. Esse cenário aborda situações reais que envolvem ostópicos deste capítulo e solicita que você crie uma solução.

I Completar as práticas sugeridas.

a Fazer um teste.

Resumo do capítulor O SQL Server 2OO8 estâ disponível nas edições Enterprise, Standard, Worþroup,

Express e Compact.

r O SQL Server é executado como um serviço dentro do Windows e exige que umaconta de serviço seja designada durante a instalação.

r Você pode configurar uma instância com os modos de autenticação Windows Onlyou Windows And SQL Server.

r O SQL Server Configuration Manager é usado para gerenciar quaisquer serviços doSQL Server.

r O Database Mail pode ser ativado e configurado em uma instância do SQL Serverpara permitir que usuários e aplicativos enviem mensagens de correio.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando oglossário no final do livro.

r Sequência de collation

r Database Mail

r Mineração de dados

r Perfil de correio

Cenário de caso

No cenário de caso a seguir, você vai aplicar o que aprendeu neste capítulo. As respostasdessas questões podem ser encontradas na seçáo "Respostas", no final deste livro.

Cenário de caso: Definindo uma infraestrutura de SQL ServerA Wide World Importers está implementando um novo conjunto de aplicativos para ge-renciar várias linhas de negócio. Dentro do centro de dados corporativo, ela precisa da

Capítulo L t lnstalação e Configuração do SQL Server 2008

Page 69: Livro_SQL

68 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

capacidade de armazenar grandes volumes de dados que podem ser acessados a partirde qualquer lugar do mundo.

Vários gerentes empresariais precisam acessar relatórios operacionais que abordam acarga de trabalho atual de seus funcionários, junto com pedidos novos e pendentes dos

clientes. Os mesmos gerentes empresariais também precisam acessar grandes volumesde dados históricos para identificar tendências e otimizar seus níveis de provimento de

pessoal e estoque.

Uma grande equipe de vendas lazligaçöes para clientes do mundo todo e precisa aces-

sar dados sobre os clientes que um representante de vendas está atendendo, junto comprováveis compradores em potencial. Os dados para a equipe de vendas precisam estardisponíveis mesmo quando os vendedores náo estáo conectados na Internet ou na rede

corporativa. Periodicamente, os representantes de vendas se conectarão na rede corpo-raliva e sinctonizarão seus dados com os bancos de dados corporativos.

Uma variedade de aplicativos Windows foi criada com o Visual Studio.NET e todo aces-

so a dados é feito usando-se procedimentos armazenados (stored procedures). O mesmo

conjunto de aplicativos é implantado para os usuários que se conectam diretamente noservidor de banco de dados corporativo, assim como para os representantes de vendasque se conectam com seus próprios servidores de banco de dados locais.

Responda as perguntas a seguir:

1. Qual edição do SQL Server 2008 deve ser instalada nos laptops da equipe de vendaspara minimizar o cuslo?

2. Qual edição do SQL Server 2008 deve ser instalada dentro do centro de dados cor-porativo?

5. Quais serviços do SQL Server precisam ser instalados para satisfazer as necessida-

des dos gerentes empresariais?

4. Quais versões do Windows precisam ser instaladas no servidor de banco de dados

corporativo?

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefas a

seguir.

lnstalando o SQL Server

I Exercício: lnstale instâncias do SQL Server Instale mais duas instâncias do me-

canismo de banco de dados SOL Server 2008.

Page 70: Livro_SQL

Gerenciando serviços do SQL ServerI Exercício: Gerencie uma instância do SQL Server Altere a conta de serviço de

uma de suas instâncias instaladas. Altere a senha de conta de servico de uma desuas instâncias instaladas.

Faça um teste

Capítulo L r lnstalação e Configuração do SQL Server 2008 69

Os testes do CD deste livro (em inglês) oferecem muitas opções. Você pode lazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-frcaçã,o 70-432. É possível configurar o teste para que ele simule a experiência de fazerum exame de certifrcaçã,o ou configurâ-lo no modo de estudo (study mode) para ver asrespostas corretas e explicações depois de cada questáo.

MAIS TNFORMAçöES Testes

Para mais detalhes sobre todas as opçöes de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

Page 71: Livro_SQL
Page 72: Livro_SQL

Capítulo 2

"Çonfigur

As escolhas de configuração feitas para um banco de dados afetam seu desempenho, suafacilidade de expansáo e seu gerenciamento. Neste capítulo, você vai aprender a proiefaras estruturas de atmazenamento de arquivo e grupo de arquivos (file group) sob umbanco de dados. Também vai aprender a configurar opções de banco de dados e modelosde recuperação, e a verificar e gerenciar a integridade de um banco de dados.

Objetivos de exame neste capítulo:

a FazeÍ backup de bancos de dados.

I Gerenciar e configurar bancos de dados.

r Manter a integridade do banco de dados.

r Gerenciar collations.

Liçöes deste capítulo:

r Lição 1: Configurando arquivos e grupos de arquivo 73

r Lição 2: Configxando opções de banco de dados 81

r Lição 3: Mantendo a integridade do banco de dados 89

Antes de começarPanfazer as liçóes deste capítulo, você deve ter:

r o Microsoft SQL Server 2008 instalado

r o banco de dados AdventureWorþ.s instalado dentro da instância

Page 73: Livro_SQL

72 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Mundo real

Míchael Hotek

Trabalhei com milhões de bancos de dados de milhares de clientes durante a par-

te de minha carceiraem que mexi com o SgL Server. Em todo esse tempo, produzimuitas das melhores práticas, criando ao mesmo tempo muitas discussões entreos "puristas". Todas as minhas recomendações e estratégias para arq[itefar e

gerenciar o SQL Server sáo provenientes de uma perspectiva pragmáttica e realque, embora tenha suas raízes emum profundo conhecimento do SQL Server, de

hardware, rede e muitos outros componentes, raramente corresponde à teoria do

mundo perfeito.

O projeto das estruturas de disco que sáo a base de um banco de dados é um dos

casos onde me afasto de muitos dos processos teóricos e cálculos que você verápublicados. Embora você possa encontrar exposições oficiais inteiras e até seções

de aulas de treinamento dedicadas a ensinar como se calcula transferência de dis-

co e gravações aleatórias versus sequenciais, nunca encontrei um ambiente onde

eu tivesse tempo ou pudesse me dar ao luxo de efetuar esses cálculos antes de

implementar um sistema.

É ótimo que existam fórmulas para calcuTar a transferência de determinada confi-guração de disco e você também pode aplicar métodos estatísticos para refinar ain-da mais esses cálculos, com base na llO (entrada e saída) aleatóñaversus sequen-

cial de um sistema. Contudo, todo o tempo gasto para fazer os cálculos ê inútil, anão ser que você também conheça a capacidade de leitura e gtavação necessáriados bancos de dados em que vai colocar esse subsistema de disco. Além disso, a

menos que você esteja comprando um novo sistema de armazenamento, dedicadoa uma aplicação específica, lerâ muita dificuldade para arquitetat o atmazena-mento em disco sob um banco de dados de acordo com todas as teorias.

o desafio na obtenção do desempenho ótimo é separar os logs de transação dos

arquivos de dados, para que você possa isolar a ll) (entrada e saída) de disco. o logde transação é o segredo das operações de gravaçáo de alto desempenho, pois a ve-

locidade de transaçáo máxima é limitada pela capacidade de gravaçáo no arquivode log de transação. Depois de cuidar do log de transaçáo, você precisa adicionararquivos e grupos de arquivo suficientes para obfer o rendimento de disco suficien-Íe para manipular a atividade deleituralgravaçâo. Contudo, o componente maisimportante do desempenho é escrever aplicativos com código eficiente que acesse

somente o volume mínimo de dados necessários parafazer atarefa empresarial.

Page 74: Livro_SQL

Lição 1: Configurando arquivos e grupos de arquivoDentro de um banco de dados, dados sáo armazenados em disco em um ou mais arquivosde dados. Antes de ser gravada no arquivo (ou arquivos) de dados, cada transaçãto é gra-vada em um arquivo de log de transação. Nesta lição, você vai aprender aprojetar os ar-quivos de dados sob um banco de dados, a agrvpar os arquivos em grupos para vincular oarmazenamento ffsico a um banco de dados e a gerenciar o log de transaçáo. Você tambémvai aprender a configurar o banco de dados tempdb parater desempenho ótimo.

Após esta lição, você será capaz de:I Criar grupos de arquivos

I Adicionar arquivos em grupos de arquivos

I Trabalhar com dados FILESTREAM

I Configurar o log de transação

Tempo estimado para a lição: 20 minutos

Configuração e Manutenção de Banco de Dados

Arquivos e grupos de arqu¡voEmbora armazenat todos os seus dados na memória proporcionasse acesso extrema-mente tâpido, você perderia tudo depois que a máquina fosse desligada. paraprofegerseus dados, eles precisam persistir no disco. Sob cada banco de dados existe um ou maisarquivos para manter seus dados.

o SQL Server usa dois tipos diferentes de arquivos - arquivos de dados e de log de tran-sação. os arquivos de dados são responsáveis pelo armazenamento a longo prazo de to-dos os dados dentro de um banco de dados. os arquivos de log de transação, discutidoscom mais detalhes posteriormente nesta lição, sáo responsáveis por armazeîar todas astransações executadas em um banco de dados.

Emvez de definir o armazenamento de objetos diretamente em um arquivo de dados,o SQL Server fornece uma camada de abstração para dar mais flexibilidade, chamadagrupo de arquívos (file groups). Os grupos de arquivo são uma estrutura lógica definidadentro de um banco de dados que mapeia um banco de dados e os objetos nele contidosnos arquivos de dados que estáo no disco. Os grupos de arquivo podem conter mais deum arquivo de dados.

Todos os objetos que contêm dados, tabelas, índices e views indexadas têm uma cláu,sula oN que pode ser usada para especificar quando você cria um objeto que permitedefinir o grupo de arquivos onde o sel server atmazena o objeto. Quando daãos sãogravados nos objetos, o SQL Server usa a definiçáo de grupo de arquivos para determi-nar em qual arquivo (ou arquivos) deve armazenar os dados.

Quando um arquivo é adicionado em um banco de dados, você especifica seu tamanhoinicial. você também pode especificar um tamanho máximo pan o arquivo, assim comose o SQL Server aumenta seu tamanho automaticamente quando o arquivo está cheiode dados. Se especificar crescimento automático, você poderá especificar se o tamanho

Page 75: Livro_SQL

74 Kit de Treinamento MCTS (Éxame70-432): Microsoft SQL Server 2008

do arquivo aumenta com base em uma porcentagem do tamanho atual ou se seu tama-

nho aumenta por uma quantidade fixa definida.

A menos que um grupo de arquivos tenha somente um arquivo, você náo sabe em qual

arquivo uma linha de dados específica estâ atmazenada. ,A.o gravar nos arquivos, o SQL

Server usa um algoritmo de preenchimento proporcional. O algoritmo de preenchimento

proporcional é projetado de modo agaranÍir que todos os arquivos dentro de um grupo de

ãrquivos atinjam a capacidade máxima definida ao mesmo tempo. Por exemplo, se você ti-

vesse um arquivo de dados de 10 gigabytes (GB) e um arquivo de dados de 1 GB, o SQL Ser-

ver gravaria dez linhas no arquivo de 10 GB para cada linha gravada no arquivo de 1 GB.

O algoritmo de preenchimento proporcional é projetado de forma a permitir a ocorrência de

umioperação de redimensionamento em nívelde um grupo de arquivos. Em outras pala-

vras, todos os arquivos dentro de um grupo de arquivos se expandem ao mesmo tempo.

Extensöes de arquivo

O SQL Server usa três extensões de arquivo: .mdf, .ndf e .ldf. Infelizmente, muitas

pessoas têm dado muita ênfase e significado a essas três extensões, onde nenhum

significado foi pretendido. Assim como os documentos do Microsoft Office Word têm

a èxænsáo .doc ou .docx e os arquivos do Microsoft Office Excel têm a extensáo .xls

ou .xlsx, a extensão nada mais é do que uma convenção de atribuição de nomes. Po-

deríamos com a mesma facilidade criar um documento do Word com a extensão .bob,

ou mesmo sem nenhuma extensáo, sem mudar o fato de que ele ainda ê, um docu-

mento do Word ou impedir a capacidade do Word de abrir e manipular o arquivo.

Um arquivo com extensão .mdf normalmente é o primeiro arquivo de dados criado

dentro de um banco de dados, geralmente é associado ao grupo de arquivos prin-

cipal e normalmente é considerado o arquivo de dados principal que contém todos

os objetos de sistema necessários para um banco de dados. A extensáo .ndfgeral-mente é ulilizada para todos os outros arquivos de dados sob um banco de dados,

independente do grupo de arquivos ao qual o arquivo está associado. A extensão

.ldf é geralmente usada para logs de transação'

As extensões de arquivo que você vë para o SQL Server nada mais sáo do que

convenções de atribuiçáo de nomes. O SQL Server não se importa com quais sáo

as extensões de arquivo, nem mesmo se os arquivos têm extensões. Se quisesse'

você poderia usar a extensáo Jdf pan o arquivo de dados principal, assim como

poderia usar a extensão .mdf para um arquivo de log de ttansaçáo. Embora o uso

de extensões de arquivo dessa forma náo afete o SQL Server, geralmente poderia

causar confusáo entre os outros administradores de banco de dados (DBAs) de

sua empresa . Para evilat essa confusão, recomend a-se utilizar as convenções de

atribuição de nomes .mdf, .ndf e .ldf comumente usadas no SQL Server, mas não

se esqueça de que essa é apenas uma convençáo de atriblJição de nomes e náo tem

absolutamente nenhum efeito sobre o SQL Server em si.

Toda manipulação de dados dentro do SQL Server ocorre na memória dentro de um

,conjun-to de buife,rs,. .s-e,v-oçê çs*té adiclqlaq4o-lrgyqq 4ê4-oq,,q4,uqbançg, {-e {a,{os,' Ls

Page 76: Livro_SQL

novos dados são primeiramente gravados em um buffer de memória, entáo gravados nolog de transação e, finalmente, persistem em um arquivo de dados por intermédio de umprocesso de segundo plano chamado checkpotnf. Quando você modifica ou exclui umalinha existente, se a linha ainda não existe na memória, o SQL Server primeiramente iêos dados do disco antes de Íazer a modificaçáo. Analogamente, se você está lendo dadosque ainda náo foram carregados em um buffer de memória, o SQL Server precisa lê-losdos arquivos de dados no disco.

Se você pudesse sempre ter ceÍleza de que a máquina em que seus bancos de dadosestão tivesse memória suficiente paÍa conter todos os dados que estáo dentro de seusbancos de dados, para melhorar o desempenho, o SQL Server poderia simplesmente lertodos os dados do disco em buffers de memória na inicialização. Contudo, os bancos dedados quase sempre sáo muito maiores do que acapacidade de memória presente emqualquer máquina; portanto, o SQL Server recupera dados do disco somente quandonecessário. Se o SQL Server não tiver espaço suficiente na memória para os dados queestão sendo lidos, os pools de buffer utilizados menos recentemente são esvaziadosparadar espaço para os dados solicitados.

Como o acesso a uma unidade de disco é muito mais lento do que o acesso à memória, oprojeto de arquivo de dados sob um banco de dados pode ter um impacto no desempenho.

A primeira camada de projeto fica dentro do subsistema de disco. À medida que o númerode unidades de disco dentro de um volume aumenta, o tempo de leitura e gravação doSQL Server aumenta. Contudo, existe um limite superior para aUO (entrada e saída) dedisco, que é baseado nacapacidade da controladora RAID (redundant array ofindependentdisks), do HBA (host bus adapter) e do barramento de disco. Assim, você não pode resolverum gargalo de I/O (entrada e saída) de disco adicionando continuamente mais unidadesde disco. Embora exposições oficiais de mais de 200 páginas jâ tenham sido escritas sobregravações alealórias versus sequenciais, velocidades de transferência, velocidades rota-cionais, cálculos de velocidades de leitura/gnvaçâo de disco bruto e outros assuntos, oprocesso de projeto do subsistema de disco fica reduzido a garantir que você tenha discossuficientes, junto com controladoras e caches de disco apropriadamente dimensionadaspara fornecer a velocidade deleituralgravaçáo necessáriapara seu banco de dados.

Se fosse apenas uma questão do número de discos, haveria bem menos gargalos dell}(entrada e saîda) de disco nos sistemas. Mas existe uma segunda camada de projeto dearquivo de dados: determinar quanios arquivos de dados você precisa e o local de cadaarquivo de dados.

Capítulo 2 r Configuração e Manutenção de Banco de Dados 75

O SQL Server cria um thread paracada arquivo sob um banco de dados. Quando vocêaumenta o número de arquivos sob um banco de dados, o SQL Server cria mais thre-ads que podem ser usados paraler e gravar dados. Contudo, você não pode simples-mente criar um banco de dados com milhares de arquivos para aumentar o númerode threads. Isso porque cadathread consome memória, tirando espaço para dadosserem colocados em cache, e mesmo se você pudesse gravar em todos os threads aomesmo tempo, saluraria os discos físicos que estão portrás dos arquivos de dados.Além disso, gerenciar milhares de arquivos de dados sob um banco de dados é extre-mamente trabalhoso e se uma grande porcentagem dos arquivos precisasse expandirao mesmo tempo, você poderia gerar atividade suficiente para interromper o fluxo de

Page 77: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Devido aos fatores conflitantes e ao simples fato de que no mundo real poucos DBAs

têm tempo para efeluar cálculos complexos de laxa de transferência de byte ou mesmopara Wojetar a camada de disco com base em um conhecimento preciso da faxa de pro-dução de dados exigida, o projeto da camada de dados é um método iterativo.

O projeto da camada de dados de um banco de dados começa com a criaçáo do banco de

dados. Quando você cria um banco de dados, ele deve ter três arquivos e dois grupos de

arquivo. Você deve ter um arquivo com a extensão .mdf dentro de um grupo de arquivoschamado PRIMARY, um arquivo com a extensão .ndf em um grupo de arquivos comqualquer nome que escolha e o log de transação com a extensão .ldf.

NOTA Extensões de arquivo

Conforme mencionado no quadro "Extensöes de arquivo", anteriormente neste capítulo, as

extensöes de arquivo nada mais são do que convenções de atribuição de nomes. Elas nãotransmitem quaisquer capacidades especiais.

Além de ser a definiçáológica de um ou mais arquivos que definem o limite de armaze-namento de um objeto, os grupos de arquivo têm uma propriedade chamada DEMULT.O objetivo da propriedadeDEMULT é definir o grupo de arquivos onde o SQL Server

coloca objetos, se você não especificar a cláusula oN durante a criaçáo do objeto.

Quando o banco de dados é criado, o grupo de arquivos principal é marcado como grupode arquivos paûãto. Depois de ciar o banco de dados, você deve marcaÍ o segundo grupode arquivos como grupo de arquivos pafuãn. Alterando o grupo de arquivos padráo, vocêgaranfe que quaisquer objetos que criar não sejam colocados acidentalmente no grupo de

arquivos principal e que apenas os objetos de sistema do banco de dados residam nesse

grupo de arquivos. Você altera o grupo de arquivos padráo usando o comando a seguir:

ALTER DATABASE <nome do banco de dados> MODIFY FILECROUP <nome do grupo de

arquìvos> DEFAULT

O principal motivo pannão colocar nenhum de seus objetos no grupo de arquivos principalé proporcionar o máximo isolamento possível na VO (entradae saída). Os dados nos objetosde sistema não mudam tão frequentemente quanto os dados nos objetos. Minimizando aatividade de gravaçáo no arquivo de dados principal, você reduz a possibilidade de introdu-zir corcupçâo devida a falhas de hardware. Além disso, como o estado do grupo de arquivosprincipal também determina o estado do banco de dados, você pode aumentar a disponibi-lidade do banco de dados minimizando as alterações feitas no grupo de arquivos principal.

Após a criação inicial do banco de dados, você adiciona grupos de arquivo, conforme fornecessário, para separar o armazenamento de objetos dentro do banco de dados. Você

também adiciona arquivos em grupos de arquivo para aumentar allO (entrada e saÍda)

de disco disponível para os objetos armazenados no grupo de arquivos, reduzindo as-

sim os gargalos de disco.

Logs de transação

a 4Uq!Aç4,o, sej41¡gtegi4a qo, a¡qgzS¡elqç.1!91',9,råU!gry9.,Ernþ9g9 ,to-{ar qs grgyStqõ-e¡Quando o SQL Server reconhece que uma transação foi executada, precisa garanlft que

Page 78: Livro_SQL

ocorram por meio de buffers de memória, a persistência é, garantida exigindo-se quetodas as alterações sejam gravadas no log de transação, antes de uma efetivaçáo queesteja sendo realizada. Além disso, as gravações no 1og de transação devem ocorrerdiretamente no disco.

Como toda alteraçã,o feita em um banco de dados deve ser gtavada diretamente no dis-co, a arquitetura de armazenamento em disco sob o log de transaçáo é a decisáo maisimportante que afeta ataxa de produção mâxima de transação que se pode obter.

O SQL Server grava sequencialmente no log de transação, mas náo 1ê o 1og, a não serdurante uma recuperação de reinicialização. Como o SQL Server 7ê e grava alealoria-mente nos arquivos de dados sob um banco de dados, isolando o log de transaçáo emum conjunto de discos exclusivo você garante que os cabeçotes dos discos não precisemse mover por todo o disco e se movam de maneira predominantemente linear.

Capítulo 2 r Configuração e Manutenção de Banco de Dados

DICA DE EXAME

A taxa de produção de transação máxima de qualquer banco de dados é limitada pelo volumede dados por segundo que o SQL Server consegue gravar no log de transação.

Comparativos

Exposições de comparativos é a melhor fonte de inform açáo parao projeto do atmaze-namento em disco para desempenho ótimo. Muitas empresas e a imprensa dão muitaênfase aos vários comparativos. Contudo, um estudo cuidadoso revela que, por si só,o sQL server não tem um impacto Íão grande sobre os números globais quanto vocêé levado a crer. o mecanismo de processamento de transação dentro do sol serveré extremamente eficiente e tem uma contribuição definida parc a taxa de produçáode transação, mas o verdadeiro segredo para maximizar a taxa de transaçáo está noarmazenamento em disco. Dada a mesma configuraçáo de disco, uma unidade dedisco de 7.200 RPM gera cerca de 5oo/o dataxa de transação de uma unidade de discode 15.000 RPM do sQL server. Ter 100 discos sob um log de transação geralmenteduplica a taxa de transaçáo de apenas 50 discos. Além disso, um dos truques usadosnos comparativos é particionar um disco de modo tal que todos os dados do sQL ser-ver sejam gravados na metade externa (ou menos que isso) daplacado disco, pois,com base na fisica, quando o cabeçote deleitwalgravaçáo de um disco se move emdireção à borda de um objeto circular, a velocidade aumenta, girando com isso umthread maior do disco sob o cabeçote da unidade por unidade de tempo.

77

Dados FILESTREAMEmbora o volume de dados dentro das empresas tenha aumentado muito, a maneiraprincipal desse aumento é caracterizadapor dados náo estruturados. Para enfrentar oproblema de armazenar, gerenciar e combinar os grandes volumes de bancos de dadosnão estruturados com os dados estruturados em seus bancos de dados. o SOL Server2008 introduziu o FILESTREAM.

Page 79: Livro_SQL

78 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

O recwso FILESTREAM permite associar arquivos a um banco de dados. Os arquivos são

armazenados em uma pasta no sistema operacional, mas sáo vinculados diretamente a

um banco de dados onde pode ser feito seu backup, podem ser restaurados, indexados

com full text e combinados com outros dados estruturados.

Embora os detalhes do recurso FILESTREAtuI sejam abordados com mais detalhes no

Capítulo 5, "Tabelas", e no Capítulo 5, "Indexaçáo full text", pata armazenat dados FI-

LESTREAM dentro de um banco de dados você precisa especificar onde eles serão arma-

zenados. Você define o local de dados FILESTREAII em um banco de dados designando

um grupo de arquivos dentro do banco de dados para ser usado para atmazenamentocom a propri edade CONTAINS FILESTREA,IL A proprieda de FILEN'AME definida para umgrupo de arquivos FILESTRE¿U especifica o caminho para uma pasÍa. A parte inicialda definição do caminho da pasfa deve existir; entretanto, a última pasta no caminho

definido não pode existir e é uiada automaticamente. Depois qrc a pasta FILESTREAM

foi criada, um arquivo filestream.hdr ê, criado na pasta, o qual é um arquivo de sistema

utilizado para gerenciar os arquivos subsequentemente gravados na pasta.

Banco de dados tempdbComo o banco de dados tempdb é muito mais utilizado do que nas versões anteriores, é

preciso tomar um cuidado especial no modo de projetar o aÍmazenamento sob tempdb.

Além de objetos temporários, o SQL Server vsa tempdb para as tabelas de iob utilizadasem operações de agrupamento/classificaçâo, tabelas de job para suportar cursores, o

aÍmazenamento de versão que suporta snapshot isolation level e o estouro de variáveisde tabela. Você também pode fazer com que operações de construção de índice utilizemespaço em tempdb.

Devido ao potencial de atividade de gravaçã,o pesada, você deve mover tempdb pata

um conjunto de discos separado de seus bancos de dados e de quaisquer arquivos de

backup. Parapropagar aIlO (enÍrada e saída) de disco, você poderia considerar a adiçáo

de mais arquivos em tempdb.

NOTA Vários arquivos tempdb

Uma prática comum paratempdb é criar um arquivo por processador. Esse "um arquivo porprocessador" é com relação ao que o SQL Server consideraria um processador e não ao pro-

cessador físico, que poderia ter vários núcleos, assim como hyperthreading'

{t"rt" rápido

1. Quais sáo os tipos de arquivos que você cria pan bancos de dados e quais são

as extensões de arquivo comumente usadas?

2. QuaT é o objetivo do 1og de transação?

Page 80: Livro_SQL

Respostas

1. Você pode criar arquivos de dados e de log para um banco de dados. Os arqui-vos de dados normalmente têm a extensão .mdf ou .ndf, enquanto os arquivosde log têm a extensáo .ldf.

2. Olog de transaçáo registra cada alteração que ocorre dentro de um banco dedados para lazet todas as transações persistirem no disco.

Capítulo 2 r Configuração e Manutenção de Banco de Dados

PRÁTtcA Criando bancos de dados

Neste exercício, você vai criar um banco de dados com vários arquivos que permitemaÍmazenamento de FILE S TREAM .

1. Execute o código a seguir parauiar um banco de dados:

CREATE DATABASE TK432 ON PRIMARY

( NAME = N'TK432_Data', FïLENAME = N'c:\test\TK43?.mdf' ,

SIZE = 8MB , MAXSIZE = UNLIMITED, FILECR0I^/TH = 16MB ),FILECROUP FC]"

( NAME = N'TK432_Data2', FILENAME = N'c:\test\TK432.ndf' ,

SIZE = 8MB , MAXS]ZE = UNLIMITED, FTLECRO!úTH = 16MB ),FILECROUP Documents CONTAINS FILESTREAM DEFAULT

( NAME = N'Documents', FILENAME = N'c:\test\TK432Documents' )LOC ON

( NAME = N'TK432_Log'; FILENAME = N'c:\test\TK432.1df' ,

SIZE = 8MB , MAXSIZE = 2048G8 , FILEGROII/TH = 16MB )GO

2. Execute o código a seguir panalterar o grupo de arquivos padrão:

ALTER DATABASE TK432

MODIFY FILEGROUP FCl-

DEFAULT

GO

Resumo da lição

r Você pode definir um ou mais arquivos de dados e de log para o aÍmazenameîtoffsico de um banco de dados.

r Os arquivos de dados são associados a um grupo de arquivos dentro de um bancode dados.

r Os grupos de arquivo fornecem o contêiner de armazenamento lógico para objetosdentro de um banco de dados.

I Os arquivos podem ser armazenados usando-se os novos recursos de FILESTREA.II.

79

Page 81: Livro_SQL

. 80 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Revisão da lição

Responda a pergunta a seguir para testar seu conhecimento sobre aLição 1. A pergunta

também está disponível no CD do livro (em inglês) se você preferir revisâ-la em formatoeletrônico.

NoTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final do

livro.

1. Você tem um banco de dados de referência chamado OrderHistory, o qual não deve

permitir que quaisquer dados sejam modificados. Como você pode garantir, com o

mínimo trabalho, que os usuários só possam ler dados do banco de dados?

A. Adicionar todos os usuários do banco de dados no rote db-datareader.

B. Criar views para todas as tabelas e conceder permissão de seleção somente nas

views para usuários do banco de dados.

C. Configurar o banco de dados como READ-ONLY.

D. Conceder permissão de seleção para todos os usuários no banco de dados e

revogar as permissões de inserção , atualizaçáo e exclusão de todos os usuáriosno banco de dados.

Page 82: Livro_SQL

Lição 2: Configurando opçöes de banco de dadosCada banco de dados tem uma variedade de opções de configuração que controlam ocomportamento padrão dentro do banco. Algumas das opções, como as que contro-lam a capacidade de recuperação das transações, as páginas do banco de dados e ogerenciamento das estatísticas, se aplicam ao banco como um todo. outras opções,por exemplo, a habilidade de rastrear mudanças e a forma como os dados sáo ðtässi-ficados e agrupados em consultas, podem ser configuradas em um nível de tabela oucoluna. Nesta liçáo, você vai aprender sobre as opções disponíveis para um banco dedados e como elas afetam o comportamento do banco de dãdos e das consultas.

Após esta lição, você será capaz de:I Configurar o modelo de recuperação do banco de dadosI Confígurar opçöes do banco de dadosI Gerenciar sequências de collationI Verificar e manter a consistência do banco de dados

Tempo estimado para a lição: 20 minutos

e Manutenção de Banco de Dados

Opçöes de banco de dadosUm banco de dados tem diversas opções que controlam uma variedade de comporta-mentos. Essas opções são divididas em várias categorias, incluindo:

I Recuperaçáo

r Opções automáticas

I Controle de alteraçáo

T ACCSSO

I Parametrizaçã,o

Opções de recuperaçãoAs opções de recuperaçáo determinam o comportamento do log de iransação e como aspáginas danificadas sáo tratadas.

Modelos de recuperaçãoTodo banco de dados dentro de uma instância do SOL Server tem uma configuração depropriedade chamada modelo de recuperação (recovery mod.el). O modelo de recupðraçãodetermina os tipos de backups que você pode reaTizar em um banco de dados. oi moäe-los de recuperação disponíveis no SeL Server 2008 sáo:

r complero (Full)

r Registro em massa (Bulk-logged)

r Simples (Simple)

Page 83: Livro_SQL

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

O modelo de recuperação ComPleto

euando um banco de dados está no modelo de recuperaçáo Completo, todas as allera-

çóes feitas usando-se tanto linguagem de manipulação de dados (DML) como lingua-

gem de definiçáo de dados (DDL) são registradas no log de transação. Como todas as

álterações são gravadas no log de transação, no modelo de recuperação Completo é pos-

sível rãcuperar um banco de dados em determinado ponto no tempo para que a perda de

dados poJsa ser minimizada ou eliminada, se você precisar se recuperar de um desastre.

ns alteiações sáo mantidas no log de transaçáo indefinidamente e só são removidas por

meio da execução de um backup de log de transaçáo.

MELI{ORES PRÁTICAS Modelos de recuperação

Todo banco de dados de produção que aceita transaçöes deve ser configurado com o modelo

de recuperação Completo. Colocando o banco de dados no modelo de recuperação Comple-

to, você pode maximizar as opçöes de restauração que são possíveis.

O modelo de recuperação Registro em massa

Certas operações são destinadas a manipular grandes volumes de dados' Contudo, a

sobrecarga do registro no log de transaçáo pode ter um impacto prejudicial no desem-

penho. O modelo de recuperação Registro em massa permite que certas operações se-

ja* erecutudas com registro mínimo. Quando uma operação minimamente registrada

é efetuada, o SQL Server náo registra cada linha alterada, mas, emvez disso, registra

Somente as extensões , rcduzindo assim a sobtecatga e melhorando o desempenho. As

operações efetuadas de maneira minimamente registrada, com o banco de dados confi-

gurado no modelo de recuperação Registro em massa, sáo:

. BCP

I BULKINSERT

. SELECT,,.TNTO

. CREATE INDEX

. ALTER INDEX. , ,REBUTLD

Como o modelo de recuperação Registro em massa não registra cada alteraçáo feita no

log de transação, você não pode recuperar um banco de dados em um ponto no tem-

po, dentro do intervalo em que uma transação minimamente registrada foi executada,

quando o modelo de recuperaçáo Registro em massa foi ativado.

O modelo de recuperação Simples

O terceiro modelo de recuperaçáo é o Simples. Um banco de dados no modelo de recu-

peração Simples registra as operações no log de transaçáo exatamente como o modelo

à. t.iup.tução Completo. Contudo, sempre que o processo de checkpoint do banco de

dados é executado, a pafte efetivada do log de lransaçáo ê descafiada. Um banco de da-

dos no modelo de recuperação Simples náo pode ser recuperado em um ponto no tempo'

pois não é possível rcalizar um backup de log de transação para um banco de dados

nesse modelo de recuperação.

Page 84: Livro_SQL

Como o modelo de recuperaçãrc éuma propriedade de um banco de dados, você define omodelo de recuperaçáo usando o comando AIiTER DATABASE, como segue:

ALTER DATABASE nome_banco_de_dadossET RECoVERY { FULL I BULK_LoCCED I StMpLE }Os tipos de backup disponíveis paracadamodelo de recuperação aparecem naTabela2-7.

Tabela 2-1 Tipos de backup disponíveis para cada modelo de recuperação

Capítulo 2 r Configuração e Manutenção de Banco de Dados

Completo

Em massa

@ o,.o DE EXAME

Você precisa saber quais tipos de backups são possíveis para cada modelo de recuperação.

Simples

Sim

Sim

Páginas danificadasÉ possível danificar páginas de dados durante uma gravação no disco, se faltar energiaou ocorrerem falhas nos componentes do subsistema de disco durante a operação degtavação. Se a operação de gravaçã.o não for concluída com êxito, você poderá ter umapâgina incompleta no banco de dados que náo pode ser lida. Como o d-ano ocorre emuma pâgina no disco, a única vez em que você verá um resultado do dano será quandoo SQL Server tentar ler apâgina do disco.

A configuração padráo do SQL Server náo verifica a existência de páginas danificadas epode fazer com que o banco de dados fique fora do ar se umapâgina d,anificad,afor encon-trada. A opçao CHECKSUM de PAGE_VERIFY pode ser afivada, ã qual permire descobrir eregistrar páginas danificadas. Quando páginas são gravadas no disco, é calculada umasoma de verificaçáo para a pâgina que é armazenada no cabeçalho d,a página. euandoo SQL Server 1ê uma pâgina do disco, uma soma de verifîcação é calculada e comparadacom a soma de verificação armazenada no cabeçalho da página. Se for encontradã umapágina danificada, será retornado um erro 824 para o aplicativo que fez a chamada eregistrado no log de erro do sel server e no log windows Application Event, e a ID dapâginadanificada será registradanataberasuspect_pages, no banco dedadosmsd.b.

No SQL Server 2005, a única maneira de corrigir uma pâgina danificada era realizan-do uma restauração de pâgina, que será discutida no capítulo g, "Fazendo backup erestaurando um banco de dados". Além de uma restauraçáo de página, se o banco dedados estiver participando de uma sessão de espelhamento de ¡ancó de dados (d,ataba-se mirroring) o SQL Server 2008 substituirá a pÉryina automaticamente por uma cópiadapágina do espelho. Quando o espelhamento de banco de dados (Databàse mirroriñg)corrige uma página corrompida automaticamente, uma entrada é registrada e pode serexaminada com a view sys. dm_db_mirro ring_auto _p age *r ep air.

Sim

Sim

Sim

Sim

Sim/não minimamenteada

Page 85: Livro_SQL

84 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Opçöes automát¡cas

Existem cinco opções para um banco de dados que permitem a ocorrência avlomáticade certas ações:

I AUTO-CLOSE

r AUTO-SHRINK

r AUTO CREATE-STATISTICS

r AUTO-UPDATE_STIt'TISTICS

r AUTO-UPDATE_STATISTICS-ASYN CH

Cada banco de dados dentro de uma instância exige uma variedade de recursos, o mais

significativo dos quais é um conjunto de buffers de memória. Cada banco de dados aberto

exige vários bytes de memória e qualquer consulta no banco de dados preenche as caches

de dados e de consulta. Se a opção AUTO_CLOSE está ativada, quando a última conexáo

com um banco de dados é fechada, o SQL Server desliga o banco de dados e libera todos

os recursos relacionados ao banco de dados. Quando uma nova conexáo é estabelecida

no banco de dados, o SQL Server inicia o banco de dados e começa aalocar recursos.

por padráo, a opção AUTO_CLOSE é desativada. A náo ser que você tenha uma séria

pressão de memória, não deve afivar um banco de dados para AUTO_CLOSE. Além dis-

so, um banco de dados acessado frequentemente náo deve ser configurado com AUTO-

CLOSE, pois isso causaria sêria degradação no desempenho. Isso porque você nunca

seria capaz de usar as caches de dados e consulta adequadamente.

Os arquivos de dados podem ser configurados para crescer automaticamente, quando

for necessário espaço adicional. Embora a maioria das operações para aumentar espaço

afete o banco de dados a longo prazo, alguns aumentos de espaço são necessários ape-

nas temporariamente. Se a opção AUTO_SHRINK estiver ativada, o SQL Server verifica-

rá periodicamente autilização de espaço de arquivos de dados e de log de transaçáo. Se

o algoritmo de verificação de espaço encontra um arquivo de dados com mais de 25o/o de

espaço livre, o arquivo êrcduzido automaticamenlepata recuperar espaço em disco.

Expandir um arquivo de banco de dados é uma operação muito dispendiosa. Reduzir

um arquivo de banco de dados também é uma operação dispendiosa. Se o tamanho de

um arquivo de banco de dados aumentou durante as operações normais, é muito provâ-

vel que, se o arquivo lot reduzido, a operaçâo se repita e aumente novamente o arquivo

de banco de dados. As únicas operações que causam mudanças ocasionais navÍilizaçãode espaço de arquivos de banco de dados sáo os processos administrativos que criam e

reconstroem índices, arquivam dados ou carrcgamdados. Como o crescimento de arqui-

vos de banco de dados é táo dispendioso, recomenda-se deixar a opçâo AUTO_SHRINK

desativada e rcdtzir os arquivos manualmente, somente quando for necessário.

Estatísticas permitem que o Query Optimizer construa planos de consulta mais efi-

cientes. Se a opção AUTO_ CREATE_STI$ISTICS estiver ativada, o SQL Sewer criaút

automaticamente as estatísticas que estáo faltando durante a fase de olimizaçâo do

processamento da consulta. Embora a uiaçã,o de estatísticas acarrete certa sobrecarga,

a vantagem do desempenho da consulta compensa o custo da sobrecargapaÍa o SQL

Server gerar estatísticas automaticamente quando necessário.

Page 86: Livro_SQL

As estatísticas capturam a distribuição relativa de valores em uma ou mais colunasde uma tabela. Depois que o banco de dados estiver em produção por algum tempo, asalterações normais do banco de dados não mudam consideravelmente a distribuiçáo es-Í.alística em geral. Contudo, alterações em massa nos dados ou mudanças substanciaisnos processos empresariais podem introduzir repentinamente distorções signifrcativasnos dados. Se as estatísticas não forem atualizadas para refletir a mudança na distri-buição, o Optimizer poderá selecionar um plano de consulta ineficiente.

Os bancos de dados têm duas opções que permitem ao SQL Server atualizar automatica-mente as estatísticas desatuaTizadas. A opção AUTO_UPDATE_STAIISTICS atualiza esta-tísticas desatualizadas durante a otimização da consulta. Se você optar por ativar a opçáoAUTO_UPDATE_STAIISTICS, uma segunda o pção, AUTO_UPDATE_STAII STICSJS\NC,controla se as estatísticas são atualizadas durante a olimizaçáo da consulla ou se a otimi-zaçáo da consulta continua enquanto as estatísticas sâo atualízadas de forma assíncrona.

Controle de alteraçãoUm dos desafios para qualquer sistema multiusuário ê garantir que as alterações de umusuário náo substituam acidentalmente as alterações de outro. Para evitar que as a\tera-ções de vários usuários substituam as dos outros, normalmente os aplicativos são cons-truídos dentro de mecanismos para determinar se uma linha foi aheradaentre o momentoem que foi lida e o momento em que foigravada de volta no banco de dados. Normalmen-te, os mecanismos de controle envolvem colunas, com uma coluna de data e hora ou deindicação de tempo, e também podem incluir um sistema inteiro de controle de versão.

O SQL Server 2008 introduz um novo recurso, implementado por meio da opção deban-co de dados CFIANGE_TRACKING. O controle de alteração é um mecanismo leve que as-socia uma versáo a cada linha em uma tabela que foi ativada para controle de alreraçã,o.Sempre que a linha é alterada, o número da versáo é incrementado. Em vez de construirsistemas para impedir que as alterações de vários usuários substituam as dos outros, osaplicativos só precisam comparar a versáo da linha para determinar se uma alteraçãoocorreu na linha entre o momento em que foi lida e o momento em que foi gravada.

Após o controle de alteraçáo ter sido ativado para o banco de dados, você pode escolherquais tabelas dentro de um banco de dados deverão ter informações de controle de al-teração capturadas. Com o passar do tempo, as informações de controle de alteração seacumulam no banco de dados; portanto, por meio da opção CHANGE_RETENTION, vocêtambém pode especificar por quanto tempo as informações de controle são mantidas e,

com a opção AUTO_CLEANUf; se elas devem ser apagadas automaticamente.

Acesso

O acesso a um banco de dados pode ser controlado por meio de várias opções.

O status de um banco de dados pode ser definido explicitamente como ONLINE, OFFLI-NE ou EMERGENCY Quando um banco de dados está no estado ONLINE, você podeefetuar todas as operações que normalmente são possíveis. Um banco de dados queestá no estado OFFLINE está inacessível. Um banco de dados no estado EMERGENCY sópode ser acessado por um membro do role db owner e o único comando que pode serexecutado é,SELECT

Capítulo 2 I Configuração e Manutenção de Banco de Dados 85

Page 87: Livro_SQL

86 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Você pode controlar a capacidade de modificar dados de um banco de dados online con-figurando o banco de dados como READ_ONLY ou READ_WRITE. Um banco de dados nomodo READ_ONLY náo pode ser gravado. ,\lém disso, quando um banco de dados é co-

locado no modo READ_ONLY o SQL Server remove todo arquivo de log de transaçáo que

esteja especificado para o banco de dados. Mudar um banco de dados de READ_ONLYpara READ_\MRITE faz com que o SQL Server recrie o arquivo de 1og de transaçáo.

O acesso de usuário a um banco de dados pode ser controlado por meio das opções

SINGLE_USER, RESTRICTED_USER e MULjII_USER. Quando um banco de dados estáno modo SINGLE_USER, apenas um usuário pode acessá-lo. Um banco de dados confi-gurado como RESTRICTED_USER só permite o acesso de membros dos roles db_owner,dbcreator e sysadmin.

Se vários usuários estiverem usando o banco de dados quando você alterar o modo para

SINGLE_USER ou se houver usuários em conflito com a configuração permitida paraRESTRICTED_USER, o comando ALTER DATABASE será bloqueado atê que todos os

usuários não permitidos desconectem. Em vez de esperar que os usuários concluam as

operações e desconectem do banco de dados, você pode especificar uma ação ROLLBA-

CK para terminar as conexões à força. A opçáo ROLLBACK IMMEDIIt'IE reverte à forçatodas as transações abertas e também desconecta todos os usuários não permitidos.Você pode permitir que os usuários concluam as transações e saiam do banco de dadosusando a opçáo ROLLBACKAFTER <número de segundos>, a qual espera pelo númerode segundos especificado antes de reverter as transações e desconectar os usuários.

O modo de operação normal da maioria dos bancos de dados é ONLINE, READ_WRITE

e MUUTI USER.

ParametrizaçãoUm dos assuntos "quentes" no desenvolvimento de aplicativos é se as chamadas do

banco de dados vão ser parametrizadas. Quando uma chamada de banco de dados é

parameírizada, os valores são passados como variáveis. Você pode encontrar muitosartigos defendendo os dois lados. Infelizmente, os aplicativos obtêm uma vantagemsignificativa quando as chamadas do banco de dados são parametrizadas.

O SQL Server coloca o plano de consulta em cache para cada consulta executada. A me-

nos que exista uma premência na cache de consulta que obrigue um plano de consulta asair da cache, toda consulta executada desde que a instância começou estána cache de

consulta. Quando uma consulta é execufada, o SQL Server a analisa e compila. Enfáo, a

consulta é companda com a cache de consulta usando um algoritmo de correspondên-cia de string. Se uma correspondência ê encontrada, o SQL Server recupera o plano quejâ foi gerado e executa a consulta.

Uma consulta parametrizada tem uma probabilidade muito mais alta de ser correspon-dida, pois a string de consulta não muda, mesmo quando os valores que estão sendousados vañam. Portanto, as consultas parametrizadas podem reutiTizar mais frequen-temente os planos de consulta colocados em cache e evitar o tempo necessário para

construir um plano de consulta.

Como nem todos os aplicativos panmetrizam as chamadas paÍa o banco de dados, vocêpode obrigar o SQL Server a parcmetrizar cada consulta para determinado banco de

dados confrgurando a opçáo de banco de dados PARAMETERIZATION FORCED.

Page 88: Livro_SQL

A configuração padrão para um banco de dados é náo impor parametrízação. A reutili-zaçáo de planos de consulta oferece uma vantagem desde que o plano de consulta queestá sendo reutilizado seja o caminho mais eficiente pelos dados. Para tabelas ondeexistem distorções de dados significativas, um valor produz um plano de consulta efi-ciente, enquanto oulro laz com que seja criado um plano de consulta diferente. Alémdisso, os aplicativos só percebem o efeito dapanmetrização se a maioria das chamadasde banco de dados tiver uma duaçãto extremamente curta.

Desde que a maioria de suas chamadas de banco de dados tenha uma duração muitocurla e o plano de consulta gerado náo mude dependendo dos parâmetros passados,obrigando aparametrização você poderá perceber um aumento no desempenho.

Capítulo 2 r Configuração e Manutenção de Banco de Dados

Sequências de collationO SQL Server tem a capacidade de aÍmazenar dados de caÍactere que abrangem qual-quer idioma escrito possível. Contudo, nem todos os idiomas seguem as mesmas regrasde classificação ou comparações de dados. O SOL Server permite definir as regras decomparaçáo, classificação, diferenciação de letras maiúsculas e minúsculas e diferen-ciaçáo de acentos por meio da especificação de uma sequência de collation.

Ao instalar o SQL Server, você especifica uma sequência de collation padrâo que é usadapor todos os bancos de dados, tabelas e colunas. Você pode anular a sequência de colla-tion padráo em cada nível. A sequência de collation de uma instância pode ser anuladaem nível de banco de dados especificando-se a cláusula COLLATE no comando CREATEDATABASE ou ALTER DATABASE.

qfr"rt" rápido

87

1. Como você restringe o acesso ao banco de dados aos membros do role db_ow-ner e termina todas as transações ativas e conexões ao mesmo tempo?

2. Quaisbackups podem ser executados para um banco de dados em cada um dosmodelos de recuperação?

Respostas

1. Você executaria o seguinte comando: ALIER DATABASE <nome do banco dedados> SET RESTRICTED_USER rvlIITH ROLLBACK IMMEDTAIE.

2. Yocê pode criar backups completos, diferenciais e de arquivo/grupo de arquivosno modelo de recuperação Simples. O modelo de recuperaçáo Registro em mas-sa permite executar tipos de backups, mas você não pode restaurar um bancode dados em um ponto no tempo durante um intervalo, quando uma transaçãominimamente registrada está em execução. Todos os tipos de backups podemser executados no modelo de recuperaçáo Completo.

PRÁncA Mudando o modelo de recuperação do banco de dadosNeste exercício, você vai mudar o modelo de recuperação do banco de dados Adventu-reWorks para Completo, a fim de garantir que possa se recuperar de uma falha em umDOntO nO temDo.

Page 89: Livro_SQL

88 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

1. Execute o código a seguir:

ALTER DATABASE AdventureVr/orksSET RECOVERY FULL

c0

2. Clique com o botão direito do mouse no banco de dados AdventureWorks, selecione

Properties e selecione a guia Options paraveÍ o modelo de recuperação e certificar-se de que é o completo.

Resumo da lição

r Você pode configurar o modeio de recuperaçâo pan um banco de dados como Com-pleto, Registro em massa ou Simples.

I Você pode fazer o backup de logs de transaçáo para um banco de dados no modelode recuperaçáo Completo ou Registro em massa.

r A opçáo AUTO_SHRINK reduz um arquivo debanco de dados quando há mais de

250/o de espaço livre no arquivo.

r Você pode controlar e registrar pâginas danificadas ativando a opção CHECKSUM

de PAGE-VERIFY.

Revisão da liçãoResponda a pergunta a seguir paratestil seu conhecimento sobre aLiçáo 2. Apergunlatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. Você é o administrador de banco de dados da Blue Yonder Airlines e é responsávelprincipalmente pelo banco de dados Reservatíons, que é executado em um servidorcom SQL Server 2008. Além de clientes fazendo reservas de voo aftavés do site daempresa, voos podem ser reservados em vários parceiros. Umavez por hora, o ban-co de dados Reservatíons recebe vários arquivos dos parceiros, os quais sáo entáocarregados no banco de dados com o utilitário BCP (Bu1k Copy Program). Você preci-sa garantir que possa recuperar o banco de dados em qualquer ponto no tempo, aopasso que também maximiza o desempenho das rotinas de importaçáo. Como você

configuraria o banco de dados para satisfazer os requisitos empresariais?

A. AIivaTAUTO-SHRINK

B. Configurar PARAMETERIZATION FORCED no banco de dados

C. Configurar o banco de dados no modelo de recuperação Registro em massa

D. Configurar o banco de dados no modelo de recuperaçáo Completo

Page 90: Livro_SQL

Lição 3: Mantendo a integridade do banco de dadosEm um mundo perfeito, tudo que você salvasse no armazenamento em disco seria sem-pre gravado corretamente, lido corretamente e nunca teria quaisquer problemas . llrrfeßz-mente, os bancos de dados SQL Server vivem em um mundo imperfeito, onde as coisasdã,o enado. Embora isso ocorra muito raramente, os dados dentro do banco de dadospodem se tornar corrompidos se houver uma falha no sistema de atmazenamento emdisco quando o SQL Server estiver gravando em uma pâgina. As páginas de dados têmtamanho de 8 quilobytes (KB), mas, ao efetuar operações de gravaçáo, o SQL Serverdivide uma páryina em 16 blocos de 572 bytes cada um. Se o SQL Server começa a gra-var blocos em uma pâgina e o sistema de disco falha no meio do processo de gravação,apenas uma parte da pâgina é gravada com sucesso, gerando um problema chamadodepágtna rasgada ou, em inglês, torn page. Nesta liçáo você vai aprender adefectar e

corrigir erros de corrupçáo em seu banco de dados.

Capítulo 2 r Configuração e Manutenção de Banco de Dados

Após esta lição, você será capaz de:

I Verificar a integridade de um banco de dados

I Usar DMVs para diagnosticar problemas de corrupção

Tempo estimado para a lição:20 minutos

Verificações de integridade do banco de dadosConforme você aprendeu na Lição 2, os bancos de dados têm uma opção chamadaPAGE_VERIFY. A verificação de pâgina pode ser configurada como TORN_PAGE_DE-TECTION ou CHECKSUM. A opçáo TORN_PAGE_DETECTION de PAGE_VERIFY existepara compatibilidade com versões anteriores e não deve ser usada. Quando a opçáoCHECKSUM de PAGE_VERIFY é, ativada, o SQL Server calcula uma soma de veriflcaçáopara apâgina antes da gravação. Sempre que uma pâgina é lida do disco, uma soma deverificaçáo é novamente calculada e comparada com a soma de verificaçáo gravadanapâgina. Se as somas de verificaçáo náo corresponderem, a pâgina foi corrompida.

Quando o SQL Server encontra uma pâgina corrompida, é gerado um erro, o comandoque está tentando acessar a pâgina corrompida é cancelado e uma entrad a ê, gravada natabela suspect_pages, no banco de dados msdb,

89

MELHoRES PRÁTlcAs Verificação de página

Você deve ativar a opção CHECKSUM de PAGE_VERIFY em todo banco de dados de produção.

Embora a verificação de pâgina possa detectar e registrar páginas corrompidas , a pá-gina deve ser lida do disco para disparar a verificação. Normalmente, os dados sãolidos do disco quando usuários e aplicativos os acessam, mas em vez de ter um usuá-rio recebendo uma mensagem de erro, é muito melhor encontrar a corrupção preven-tivamente e corrigir o problema usando um backup, antes que o usuário tenha umprocesso cancelado.

Page 91: Livro_SQL

90 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Você pode obrigar o SOL Server a ler toda pâgina do disco e verificar a integridade exe-

cutando o comando DBCC CHECKDB. A sintaxe genérica de DBCC CHECKDB é:

DBCC CHECKDB [( 'nome-banco-de-dados' I id-banco-de-dados | 0

, NoTNDEX | { REPATR_ALL0W_DATA_L0SS I REPAIR_FAST

[ , I ESTIMATEONLY

PURTTY]]}]

REPATR-REBUILD } ] )]I¡/ITH {[ ALL_ERRORMSCS ]

Quando o comando DBCC CHECKDB é executado, o SQL Server executa todas as ações

a seguir:

r Verifica a alocaçâode página dentro do banco de dados

r Verifica a integridade estrutural de todas as tabelas e views indexadas

r Calcula uma soma deveúficaçâo para cada pâgina de dados e índice paîa comparar

com a soma de verificaçáo armazenada

r Valida o conteúdo de cada modo de exibiçáo indexado

r Verifica o catéÃogo do banco de dados

I Valida os dados do Service Broker dentro do banco de dados

Paru realizar essas verificações, o comando DBCC CHECKDB executa os seguintes co-

mandos:

. DBCC CHECKALLOC, paraverificar a alocaçâo de página do banco de dados

t DBCC CHECKCATALOG, para verificar o catâlogo do banco de dados

a DBCC CHECKTABLE, para cada tabela e view no banco de dados verificar a integri-dade estrutural

Os erros encontrados são mostrados na saída para que você possa corrigir os problemas.

Se for encontrado um erro de integridade em um índice, você deve eliminar e recriar oíndice. Se for encontrado um erro de integridade em uma tabela, você precisa usar seus

backups mais recentes para reparar as páginas danificadas.

[, I N0_TNFoMSGS ] I t, I TABLoCK ] lI I l, I PHYSTCAL_oNLY ] I I t, I DATA_

NOTA Espelhamento de banco de dados

Se o banco de dados estiver participando de espelhamento de banco de dados (Database Mir-roring), o SQL Server tentará recuperar uma cópia da página do espelho. Se a página puder ser

recuperada do espelho e tiver o conteúdo correto, será substituída automaticamente no prin-cipal, sem exigir nenhuma intervenção. Quando o SQL Server substitui uma página corrompidaa partir do espelho, uma entrada é gravada na view sys.dm-db-mirroring-outo-page-repair.

Page 92: Livro_SQL

t'teste rápido

1. Qual opçáo deve ser ativada para todos os bancos de dados de produção?

2. Quais verificações o comando DBCC CHECKDB realiza?

Respostas

1. Você deve configum a opçãto CHECKSUM de PAGE _VERIFY para todos os ban-cos de dados de produção.

2. O comando DBCC CHECKDB verifica a integridade lógica e fisica de cada tabe-la, índice e view indexada dentro do banco de dados, junto com o conteúdo decada view indexada, alocações de página, dados do Service Broker e catáÃogodo banco de dados.

Capítulo 2 I Configuração e Manutenção de Banco de Dados

PRÁTlcA Verificando a ¡ntegridade do banco de dadosNeste exercício, você vai verificar a integridade do banco de dados AdventureWorks.

1. Execute o código a seguir:

2. Examine os resultados.

Resumo da lição

DBCC

c0CHECKDB ('AdventureWorks') I^IITH NO_INFOMSGS, ALL_ERRORMSGS

r Aopção CHECKSUM dePAGE_VERIFY deve ser ativada para todo banco de dados deprodução, para detecrar quaisquer erros de integridade estrutural.

r Quando umapâgina corrompida êencontrada, ela é registndana tabela suspect_pages no banco de dados msdb. Se um banco de dados está participando de umasessáo de Database Mirroring, o SQL Server recupera automaticamente uma cópiada pâgina do espelho, substitui a pâgina no principal e registra uma entrada naview sy s. dm _db 1nínoríng _auto Jtage repaír.

r O comando DBCC CHECKDB é usado paraverificar a consistêncíalógica e ffsica deum banco de dados.

Revisão da lição

Responda a pergunta a seguir paraleslar seu conhecimento sobre aLiçâo 3. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisála em formatoeletrônico.

91

Page 93: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. Quais comandos sáo executados quando você executa o comando DBCC CHECKDB?(Marque iodas as respostas que se aplicam.)

A. DBCC CHECKABLE

B. DBCC CHECKTDENT

C. DBCCCHECKCATALOG

D. DBCCFREEPROCCACHE

Page 94: Livro_SQL

Revisão do capítuloPara reforçar o que aprendeu neste capítulo, você pode:

I Ler o resumo do capítulo.

r Examinar a lista de termos-chave introduzidos neste capítulo.

r Completar o cenário de caso. Esse cenário aborda situações reais que envolvem os

tópicos deste capítulo e solicita que você crie uma solução.

r Completar as práticas sugeridas.

a Fazer um teste.

Resumo do capítulor Os bancos de dados podem ser configurados com o modelo de recuperação Comple-

to, Registro em massa ou Simples.

r O modelo de recuperaçáo do banco de dados determina os backups que podem sercriados, assim como as limitações sobre as opções de recuperação que podem serrealizadas.

r Você pode definir uma sequência de collationpara um banco de dados que anule asequência de collation defïnida para a instância.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando oglossário no final do livro.

r Página corrompida

I Grupo de arquivos

I Modelo de recuperaçáo

Cenário de caso

No cenário de caso a seguir, vocêvai aplicar o que aprendeu neste capítulo.As respostasdessas questões podem ser encontradas na seção "Respostas", no frnal deste livro.

Cenário de caso: Configurando bancos de dados para a Coho Vineyard

Histórico

Visão geral da empresa

A Coho Vineyard foi fundada em 1947 como uma vinícola regional dirigida por umafamília. Graças aos vinhos premiados que tem produzido nas últimas décadas, a CohoVineyard teve crescimento significativo. Para continuar expandindo, vârias vinícolasforam adquiridas com o passar dos anos. Atualmente, a empresa possui 16 vinícolas;

Capítulo 2 r Configuração e Manutenção de Banco de Dados 93

Page 95: Livro_SQL

94 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

9 estão em Washington, oregon e Califórnia, e as 7 restantes estão localizadas em Wis-consin e Michigan, todas nos EUA. As vinícolas empregam 532 pessoas , 162 das quaistrabalham no escritório central, que abúga servidores fundamentais para o negócio. Aempresa tem 722 vendedores que viajam pelo mundo e precisam acessar a disponibili-dade de estoque atualizada.

Mudanças planejodas

Até agora, cada uma das 16 vinícolas pertencentes à Coho Vineyard tem um site sepa-rado em suas instalações. A Coho Vineyard quer consolidar a presença na Web dessasvinícolas para que os visitantes dos sites possam comprar produtos de todas as 16vinícolas aparth de uma únicaloja online. Todos os dados associados a esse site serãoarmazenados em bancos de dados no escritório central.

Quando os dados forem consolidados no escritório central, será usada replicaçáo pormesclagem (merge) para fornecer dados para os vendedores, assim como para permitirque eles insiram pedidos. Parasatisfazer as necessidades dos vendedores até que o pro-jeto de consolidação esteja concluído, dados de estoque de cada vinícola são enviadospan o escritório central ao final de cada dia. A replicaçáo por mesclagem (merge) foiimplementada para permitir que os vendedores mantenham cópias locais de dados docliente, do estoque e de pedidos.

Ambiente de dados existente

Bancos de dodos

Atualmente, cada vinícola mantém seu próprio banco de dados para armazenaf todas asinformações empresariais. Ao final de cada mês, essas informações sâo trazidas para oescritório central e transferidas para os bancos de dados mostrados naTabela 2-2.

Tabela2-2 Bancos de dados da CohoVineyard

Customer

Accounting

lnventory

Promotions

Depois que o projeto de consolidação do banco de dados estiver concluído, um novobanco de dados, chamado order, sewirá como data warehouse para a nova loja da web.Como parte de seu trabalho diário, os funcionários também se conectaráo periodicamen-te no banco de dados Order usando um novo aplicativo Web interno.

o banco de dados HR contém dados sigilosos e é protegido com TDE (TransparentData Encryption). Além disso, os dados da tabela Salary sáo criptografados usandoum certificado.

1-80 megabytes (MB)

5OO MB

t_00 MB

250 MB

80 MB

Page 96: Livro_SQL

Servidores de banco de dados

Um único servidor, chamado DB1, contém todos os bancos de dados no escritóriocentral. DB1 está executando SQL Server 2008 Enterprise no Windows Sewer 2003Enterprise.

Requisitos empresariaisVocê precisa projetar uma soluçáo de arquivamento para os bancos de dados Customere Order. Sua estratégia de arquivamento deve permitir que os dados de Customer sejamguardados por seis anos.

Palapreparar o banco de dados Order para os procedimentos de arquivamento, você criauma tabela particionada chamada Order.Sales. Order.Sales inclui duas partições. A par-tição 1 inclui atividade de vendas do mês corrente. A partição 2 é,usadapara armazenaratividade de vendas do mês anterior. Os pedidos feitos antes do mês anterior devem sermovidos para outra tabela particionada, chamada Order.Archive. A partição 1 de Order.

Archive inclui todos os dados arquivados. A partição 2 permanecevazia.

Um processo precisa ser criado para caÍregar os dados de estoque de cada uma das 16

vinícolas, diariamente, às 4h00min.

Quatro grandes clientes enviam pedidos usando o esquema XML (Extensible MarkupLanguage) da Coho Vineyard para transações EDI (Electronic Data Interchange). Os ar-quivos EDI chegam às 17h00min e precisam ser analisados e carregados nos bancos de

dados Customer, Accountíng e Inventory, cada um dos quais contém tabelas relevantesparafazer um pedido. Atualmente, arotina de importação EDI é um aplicativo em C++de um thread que leva entre três e seis horas para processar os arquivos. Você precisaconcluir o processo EDI às 17h30min para satisfazer o acordo de atendimento SLA(Service Level Agreement) fechado com os clientes. Depois que o projeto de consolidaçáotiver terminado, a rotina EDI carregará todos os dados no novo banco de dados Order.

Você precisa fazer o backup de todos os bancos de dados em todos os locais. No cenário depior caso, você pode perder no máximo cinco minutos de dados. Os bancos de dados Cus-

tomer, Account, Inventory, Promotíons e Order podem ficar fora do ar no máximo por 20minutos, no caso de um desastre. Os dados com mais de seis meses nos bancos de dadosCustomer e Order podem ficar fora do ar por alé, 72 horas no caso de um desastre.

Responda as perguntas a seguir:

1. Como você deve configurar os bancos de dados para obler o máximo desempenho?

2. Como os bancos de dados devem ser configurados para satisfazer as obrigações de

recuperação?

Capítulo 2 I Configuração e Manutenção de Banco de Dados 95

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefas a

seguir.

Page 97: Livro_SQL

96 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Configurando bancos de dadosI Exercício 1 Crie um banco de dados que possa atmazenar dados FILESTREAI4.

I Exercício 2 ATtere o modelo de recuperação e observe os efeitos nas opções debackup e restauraçáo.

I Exercício 3 Altere o estado do banco de dados para READ_ONLY e observe o efeitono arquivo de log de transaçáo.

I Exercício 4 Crievárias conexões com um banco de dados, altere o acesso para RES-TRICTED_USER e especifique a opção ROLLBACK IMMEDIAIE. Observe os efeiros.

Faça um testeOs testes do CD deste livro (em inglês) oferecem muitas opções. Você pode fazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-fr,caçâo 70-432. É possível configurar o teste para que ele simule a experiência de fazerum exame de ceniflcaçãro ou configurâ-lo no modo de estudo (study mode) para ver asrespostas corretas e explicações depois de cada questão.

MA|S INFORMAçÕES Testes

Para mais detalhes sobre todas as opçöes de testes disponíveis, consulte a seção "Como utilizaros testes" na Introdução deste livro.

Page 98: Livro_SQL

Tabelas

As tabelas formam a essência dos bancos de dados, definindo a estrutura utilizada paraarmazenat os dados. Um banco de dados sem tabelas teria pouca utilidade dentro de

um aplicativo empresarial. Neste capítulo, você vai aprender a criar tabelas eficientesque podem funcionar bem sob uma variedade de condições, ao passo que também im-põem as regras de seu negócio.

Objetivo de exame neste capítulo:

r Implementar compactação de dados.

Lições deste capítulo:

r Lição 1: Criando tabelas 99

r Lição 2: Implementando constraints l13

Antes de começarParafazer as lições deste capítulo, você deve ter:

I uma instância do SQL Server 2008 instalada

I o exemplo de banco de dados AdventureWorks carcegado em sua instância

.

.,/

úÍB¡ rvlun¿o realXalt.7

Míchael Hotek

Comecei a Írabalhar com SQL Server há quase 20 anos. Evidentemente, naquelaépoca era o Sybase SQL Server, que se tornou a base da primeira versão do Mi-crosoft SQL Server. Durante esse tempo, lidei com milhões de bancos de dados emmilhares de empresas. Também ensinei SQL Server para mais de 50.000 pessoas.

Durante esse período, fiquei surpreso de ver como para muitas pessoas é complica-do projetar um banco de dados ou ensinar alguém apro)etar um banco de dados.

Curiosamente, constata-se que, independente de você estar projetando um bancode dados relacional ou um data warehouse, a totalidade da disciplina do projetode banco de dados pode ser revelada em uma única aftrmação - "Colocar as coisasem seu devido lugar". Sim, as centenas de milhares de páginas publicadas sobreprojeto de banco de dados relacional ou data warehouse podem ser resumidas auma única frase, combinada com alógica que todos possuímos quando somos so-licitados a projetar um banco de dados.

Page 99: Livro_SQL

98 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Se você projetasse todos os seus bancos de dados tendo em vista essa única frase,

não apenas precisaria de muito pouco tempo pata projetar um banco de dados,

mas também produziria o banco de dados mais adequado às necessidades de sua

empresa. Quando projela um banco de dados, você náo está realmente projetando

o banco de dados inteiro de uma sóvez. Você está projetando uma tabela porvezpara os dados que precisa armazenar.

As tabelas seguem algUmas regras muito básicas - as colunas definem um grupo

de dados que precisam seÍ armazenados e você adicionanalabela uma linha para

cada grupo de informações exclusivo. As colunas definidas representam informa-

ções distintas com que você precisa ttabaThar dentro de seu banco de dados, como

uma cidade, um nome de produto, prenome, sobrenome ou preço.

Se você fosse projetar um banco de dados pata aÍmazenar pedidos de produtos fei-

tos por clientes, jâ Leria definido três tabelas básicas - clientes, pedidos e produtos.

Para um cliente fazet um pedido, você desejaria saber quem é o cliente. Então, sua

tabela de clientes teria uma ou mais colunas para um nome, dependendo de você

querer trabalhar Separadamente com prenome e sobrenome, e se quisess e aÍmaze-

nar um pronome de tratamento, como V Ex.u, Senhor ou Senhora.

Se seus clientes esláo fazeîdo pedidos, você provavelmente quer enviá-los a eles;

portanto, teria uma ou mais colunas paÍa aÍmazenar o endereço. Legitimamente,

você poderia colocar a coluna (ou colunas) do endereço do cliente na tabela de

clientes. Essa estrutura funcionaria bem se você permitisse Somente um endereço

para um cliente. Se os clientes quisessem mais flexibili dade pan atmazenaï YâÍios

endereços, você criaria uma nova tabela para atmazenar os endereços e, enláo,

vincularia os endereços aos clientes. A tabela de endereços de clientes seria criada

porque você pode adicionar um número ilimitado de linhas em uma tabela, en-

quanto o número de colunas é finito.

Se fosse continuar o processo, você teria definido rapidamente dezenas ou mes-

mo centenas de tabelas que permitiriam armazenar oS dados necessários para

seu aplicativo empresarial. Você também teria criado seu banco de dados sem

nem mesmo ter pensado sobre a primeira, segunda ou terceira forma normal,

esquemas em estrela, esquemas tipo floco de neve ou qualquer outro tipo de

construçáo de banco de dados. Você teria criado seu banco de dados "colocan-

do as coisas em seu devido lugar". Entáo, depois de ter definido a estrutura do

banco de dados, restaria apenas determinar quais tipos de dados uma coluna

iria atmazenar e se a coluna seria obrigada aler ou náo um banco de dados que

pudesse ser usado por um aplicativo.

Page 100: Livro_SQL

Lição 1: Criando tabelasAs tabelas formam os blocos de construçáo mais granulares dos aplicativos, definindo a

estrutura dos dados que podem seÍ armazenados. Ao projetar tabelas, sua tarefa é uiaras tabelas que possam armazenat os dados necessários para seus aplicativos empre-sariais, enquanto, ao mesmo tempo, minimizam a quantidade de disco e memória que

estáo sendo utilizados. Nesta liçáo você vai aprender sobre os compromissos que preci-sa levar em conta na definição de uma tabelapara manipular seus dados empresariais,enquanto minimiza os recursos consumidos pelos dados.

Após esta lição, você será capaz de:

I Criar esquemas

I Selecionar tipos de dados apropriados

I Aplicar propriedades de coluna para impor requisitos empresariais

I Adicionar cálculos em uma tabela

I Definir propriedades de armazenamento que reduzem a quantidade de espaço con-sumido por uma linha ou página

Tempo estimado para a lição:40 minutos

Capítulo 3 r Tabelas

Esquemas

Além de ser uma estrutura de segurança (sobre a qual você vai aprender mais no Ca-pítulo 11, "segurança do SQL Server"), um esquema (schema) fornece um mecanismoconveniente para agn)par objetos dentro de um banco de dados. Um esquema também é

o contêiner que possui todos os objetos dentro de um banco de dados.

Você gerencia cada banco de dados criado dentro de uma instância separadamente,em termos de consumo de disco, transações e recursos de memória. Se atualmente seuaplicativo acessa vários bancos de dados ou você está criando um aplicativo com váriosbancos de dados que náo precisam ser aÍmazenados em instâncias separadas paraferuma maior capacidade, entáo deve combinar os objetos em um único banco de dados e

ufilizar esquemas para separar grupos de objetos.

A sintaxe mais simples para criar um esquema é:

CREATE SCHEMA <none do esquema> AUTHORIZATION <none do proprietário>

99

NOTA Criando esquemas

A instrução CREATE SCHEMA dá suporte para a criação de um esquema, junto com a criaçãode tabelas e views e a atribuição de permissões, em uma única instrução. A criação de códi-go dentro do SQL Server não é um exercício de atordoamento nem um exercício de tentardescobrir o menor número de instruções que você pode construir para atingir seus objetivos.Normalmente, alguém terá de fazer a manutenção de seu código e é aconselhável economizaralguns passos extras para criar um script mais fácil de manter. Portanto, recomenda-se nãocriar tabelas e views nem atribuir permissöes dentro de uma instrução CREATE SCHEMA.Todainstrução CREATE SCHEMA executada deve estar em um lote separado.

Page 101: Livro_SQL

100

Tipos de dados

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Embora normalmente náo seja referido como constraint, o tipo de dados de uma colunaé a constraint mais fundamental que você pode especificaÍ paÍa uma tabela. A escolhado tipo de dados restringe o intervalo de valores possíveis, ao passo que define a quan-tidade máxima de espaço que será consumido para a coluna dentro de uma linha.

A escolha do tipo de dados também é a decisáo de desempenho mais importante quevocê tomará para um banco de dados. Você precisa selecionar um tipo de dados quepossa atmazenar os dados necessários para a empresa, mas o tipo de dados náo deveconsumir um único byte de afmazenamento a mais do que o necessário. Embora possaparecer estranho se preocupar com algo que parece táo simples como 1 byte, quandovocê tem milhões ou bilhóes de linhas de dados em uma tabela um único byte por linhadesperdiçado acrescenta uma quantidade significativa de armazeîamento em disco.Mais importante ainda, cadabyte desperdiçado também desperdiça seu bem mais pre-cioso: memória no servidor, pois todos os dados precisam passar pela memória antesque um aplicativo possa utilizá-los.

Tipos de dados numéricosNove tipos de dados numéricos vêm com o SQL Server 2008 e eles são usados para aÍ-mazenaÍ números inteiros, monetários e decimais. A Tabela 3-7lista os tipos de dadosnuméricos disponíveis, junto com o intervalo de valores e o espaço de armazenamentonecessário para cada um.

Tabela 3-1 Tipos de dados numéricos

TINYINT

SMALLINT

INT

BIGINT

DECIMAL(P,S) e -10^38+l- a l-0^38-1-NUMERIC(PS)

0a255

-32.768 a 32.767

SMALLMO N EY -2L4.7 48,3648 a 2L4.7 48,3647

-2^3L a 2^3L-L

MONEY

-2^63 a 2^63-7

REAL

FLOAT(N)

-922.337 .203.685.47 7,5808 a

922.337 .203.68s.47 7,s807

NoTA Tipos de dados NUMERIC e DECIMAL

-3,4^38 a -1,1-8^38, 0 e 1-,1-8^38 a 3,4^38

Os tipos de dados NUMERIC e DECIMAL são exatamente equivalentes. Os dois tipos de dadosainda existem dentro do SQL Server para compatibilidade com versöes anteriores.

-l-,79^308 a -2,23^308,0 e 2,23^308 a1,79^308

1 byte

2 bytes

4 bytes

8 bytes

5 a 1-7 bytes

4 bytes

8 bytes

4 bytes

4 bytes ou 8 bytes

Page 102: Livro_SQL

Os tipos de dados IIONEY e SI¡IALLIIONEIZ são feitos especificamente para armazeîatvalores monetários com um máximo de quatro casas decimais.

O tipo de dados FLOAT recebe um parâmetro opcional do número de dígitos armazena-dos após a vÍrgula decimal que é chamado de mantissa. Se a mantissa é definida entre1 e 24, então um tipo FLOAT consome 4 bytes de armazenamento. Se a mantiss a é defr,-

nida entre 25 e 53, efilãLo vm FLOAT consome 8 bytes de armazenamento.

NOTA Precisão numérica

Os tipos de dados FLOAT e REAL são classificados como valores numéricos aproximados ounúmeros em ponto flutuante. O valor armazenado dentro de uma coluna float ou real de-pende da arquitetura de processador utilizada. Mover um banco de dados de um servidorcom conjunto de chips lntel para outro com um conjunto de chips AMD ou vice-versa podeproduzir resultados diferentes nessas colunas. Se você estiver utilizando FLOAT e Rå41 devidoao intervalo de valores suportado, deve levar em conta os fatores de erro combinados emqualquer cálculo que efetue.

Tipos de dados decimaisOs tipos de dados decimais têm dois parâmetros - precisão e escala. A precisão indicao número total de dígitos que podem ser armazenados à esquerda e à direita davírguladecimal. A escala indica o número máximo de dígitos à direita da vÍrgula decimal. Porexemplo, atribuir o tipo de dados DECIMAL(8,S) a uma coluna permite que o SQL Serverarmazene um total de oito dígitos na coluna, com três deles à direita da vírgula decimalou valores enlre -99999,999 e 99999,999.

O espaço de armazenamento consumido por um tipo de dados decimal depende da pre-cisão definida, como mostrado naTabeIaS-2.

Capítulo 3 r Tabelas 101

Tabela 3-2 Armazenamento de tipo de dados decimal e numérico

1a9

10a19

20 a28

29 a38

Tipos de dados alfanuméricosO SQL Server 2008 tem quatro tipos de dados para armazenar dados alfanuméricos(character), com a escolha de qual usar dependendo de você tervalores de comprimentofixo ou vaúâvel e de querer armazenar dados Unicode ou náo Unicode. hTabelaS-3mostra o espaço de armazenamento consumido pelos tipos de dados alfanuméricos.

5 bytes

9 bytes

1-3 bytes

17 bytes

Page 103: Livro_SQL

toz Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Tabela 3-3 Tipos de dados alfanuméricos

CHAR(n)

VARCHAR(n)

NCHAR(n)

NVARCHAR(n) Unicode, 2 bytes por caractere armazenado, até o máximo de4.000 bytes

Não Unicode, 1 byte por caractere definido por n, até o máximo de8.000 bytes.

Não Unicode, 1 byte por caractere armazenado, até o máximo de8.000 bytes

Você pode substituir o número de caracleres pela palavra-chave MAX, como emVARCHAR(MAX). Um tipo de dados VARCHAR(MAX) oUNVARCHAR(Ì'4AX) permite aÍma-zenar alé 2 gigabyles (GB) de dados.

Dados de data e horaUm dos maiores avanços recentes no SQL Server aumenta muito os tipos de dados para

atmazenaÍ datas e horas, como mostrado naÏabela 3-4.

Tabela 3-4 Tipos de dados de data e hora

Unicode, 2 bytes por caractere definido por n, até o máximo de4.000 bytes

SMALLDATETTME 0L/01/1900 a 06/06/2079

DATETIME

DATETIME2

DATETIMEOFFSET 0l/0L/0001 a L2/31/9999

DATE

TIME

0t / 01 / !7 53 a 12 / 3l / 9999

01. / 01. / 00ol a 12 / 3L / 9999

Os tipos de dados SMALLDATETIME e DATETIME aÍmazenam uma dala e uma horajuntas, como um valor único, e existem em várias versões do SQL Server. O intervalode valores armazenados para um tipo de dados DATETIME era bastante limitado paraaplicativos passados; portanto, o SQL Server 2008 introduziu o tipo de dados DAIETI-ME2 que oferece precisão melhor do que SMALLDATEUME oUDATETIME, junto com umintervalo de valores muito maior.

O tipo de dados DATETIMEOFFSETpeTmife armazenar um fuso horário para aplicativosque precisam rcgionaTizat datas e horas.

As adições de tipo de dados mais procuradas sáo DATE e TIME. Agora você pode arma-zenar dados apenas como data ou apenas como hora, eliminando assim muitos dosproblemas de análise e comparaçáo que os desenvolvedores enfrentavam nas versõesanteriores do SQL Server.

0L/ 0L / 0001. a L2 / 3L/ 9999

00:00:00.0000000 a23:59:59.9999999

l minuto

0,00333 segundos

1-00 nanossegundos 6a 8 bytes

1-00 nanossegundos 8 a 10 bytes

1- dia

1-00 nanossegundos 3a 5 bytes

4 bytes

8 bytes

3 bytes

Page 104: Livro_SQL

Dados bináriosOs dados binários sáo armazenados em um conjunto de quatro tipos de dados, que es-

tão listados na Tabela 3-5.

Tabela 3-5 Tipos de dados binários

BIT

BINARY

VARBINARY

De modo anâlogo aos tipos de dados alfanuméricos de comprimento variável, você pode

aplicar a palavra-chave MAX no tipo de dados VARBINARY para permitit o aÍmazena-mento de até,2 GB de dados, enquanto suporta todas as funções de programação dispo-níveis para manipular dados binários.

Tipo de dadosXMLO tipo de dados XML permite armazeîaÍ e manipular documentos XML (Extensible Ma-rkup Language) de forma nativa. Ao armazenar documentos XML, você está limitado aum máximo de2 GB, assim como a um máximo de 128 níveis dentro de um documento.Embora você possa aÍmazenaÍ um documento XML em uma coluna alfanumérica, o

tipo de dados XML entende de forma nativa a estrutura dos dados XML e o significadodas marcas XML dentro do documento.

Como o tipo de dadosXML entende uma estrutura XML de forma nativa, você pode apli-car vaTidaçâo adicional na coluna XML, o que restringe os documentos que podem serarmazenados com base em um ou mais esquemas XML.

Os esquemas XML são armazenados dentro do SQL Server em uma estrutura chamadacoleção de esquemas (schema collection). As coleções de esquemas podem conter umou mais esquemas XML. Quando uma coleção de esquemas é aplicada em uma colunaXML, os únicos documentos que podem ser armazenados dentro da coluna XML devemprimeiramente ser validados na coleçáo de esquemas XML associada.

O comando a seguir cria uma coleção de esquemas XML:

CREATE XML SCHEMA COLLECT]ON ProductAttributes AS

'<xsd:schema xmlns:schema="PowerTools" xmlns:xsd=httpl.//v'¡v,¡w.w3.org/2001-/Xlt4LSchema

xml ns : sq1 types=httpi / / schemas . mi crosoft. comlsq1 se rve r /20o4/sqltypestargetNamespace="PowerTool s" el ementFormDefault="gual i fj ed">

<xsd : i mpo rt ñâmespace=" http : / / schemas . mj c rosoft . com,/sql s erv er / 2O04 /sql types "schemalocati on=" http: //schemas . mi crosoft. comlsq'l se rve r /2004/sqltypes/sqltypes.xsd" /><xsd : el ement name="dbo. PowerTool s">

<xsd: compl exType>

Nulo, 0 e L

Dados binários de comprimento fixo

Dados binários de comprimento variável Até 8.000 bytes

Capítulo 3 r Tabelas 103

l bit

Até 8.000 bytes

Page 105: Livro_SQL

LO4 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

<xsd: sequence><xsd : el ement name="Category">

<xsd : sì mpl eType><xsd : restri cti on base="sql types : varchar" sql types : l ocal eld="1-033"

sql types : sqlCompareOptìons="IgnoreCase IgnoreKanaTypeIgnorehlì dth" sq1 types : sq'l Sortld="52">

<xsd:maxlength value="30" /></xsd: restri cti on>

</xsd: s'imp'l eType></xsd: el ement><xsd : element name="Amperage">

<xsd: sì mpl eType><xsd: restriction base:"sqltypes :decimal ">

<xsdltotalD'igits value="3" /><xsd :fractionDigìts val ue="l",/>

</xsd:. restri cti on></xsd:. si mp1 eType>

</xsd: el ement><xsd l el ement name="Voltage">

<xsd: sì mpl eType><xsd : restri cti on base="sql types : char" sq] types l I ocal eId="1033"

sql types : sqlCompare0ptì ons="fgnoreCase IgnoreKanaTypeIgnoretal"i dth" sql types : sq'l Sortld=" 52 ">

<xsd:maxlength va] ue:"7" /></xsd: restri cti on>

</xsdl. si mpì eType></xsd: el ement>

</xsd: sequence><,/xsd: compl exType>

</xsd: el ement></xsd : schema>'

Tipos de dados espac¡a¡s

o SQL Server 2008 suporta dois tipos de dados para armazenar dados espaciais: GE-

OMETRY e GEOGRAPIIY. Os dois tipos de dados espaciais sáo implementados usando-se recursos CLR (Common Language Runtime) que foram introduzidos no SQL Server2005. Os dados geométricos sáo baseados na geometria euclidiana e são usados paraarmazenaÍ pontos, linhas, curvas e polígonos. Os dados geográficos sáo baseados emuma elipsoide e são usados paÍa armazenar dados como latitudes e longitudes.

Você define colunas espaciais em uma tabela usando os tipos de dados GEOMETRY ouGEOGRAPHY. Quando valores sâo aÍmazenados em uma coluna espacial, você precisacriar uma instância usando uma das várias funções espaciais especÍficas do tipo de da-dos que está sendo armazeÍlado. Uma coluna GEOMETRY pode conter um de sete dife-rentes objetos geométricos, com cada coordenadana definiçáo separada por um espaço,como mostrado naTabela 3-6.

As instâncias Multix definem vârias formas geométricas dentro de uma instãncia. Ge-

ometrycollectíon permite que várias formas sejam combinadas em uma única colunaþara representar uma forma complexa. Ouando o obieto é instanciado por meio de seu

Page 106: Livro_SQL

atmazenamento dentro de uma coluna definida como GEOMETRY ou GEOGRAPHY, osdados e a definiçáo da instância do objeto sâo armazenados dentro da coluna. Como otipo de objeto e os valores de dados de coordenada são inseparáxeis, é possível armaze-nar vários tipos de objetos diferentes em uma única coluna.

Tabela 3-6 Definiçöes de tipo de dados geométricos

LineString

Polygon

GeometryCollection Contém uma ou mais instâncias de outras formas geométricas, comoPoint e LineString.

Tem coordenadas x e y, com valores de elevação e medida opcionais.

Uma série de pontos que definem o início, o fim e quaisquerinclinaçöes na linha, com valores de elevação e medida opcionais.

MultiPolygon

MultiLineString

Uma superfície definida como uma sequência de pontos que definemum limite exterioç junto com zero ou mais círculos interiores. Umpolígono tem pelo menos três pontos distintos.

Capítulo 3 r Tabelas

MultiPoint

Os dados geogtáficos são armazenados como pontos de latitude e longitude. A únicarestriçáo para os dados geogrâficos é que eles e quaisquer comparações náo podem ul-trapassar um único hemisfério.

Tipo de dados HIERARCHYIDO tipo de dados HIERARCHyID é usado para organizar dados hierárquicos, como or-ganogramas, listas de materiais e fluxogramas. O tipo HIERARCHYID armazeîa vmaposição dentro de uma hierarquia em âwore. Empregando um tipo HIERARCIIYID,vocêpode localizar nós rapidamente dentro de uma hierarquia, assim como mover dadosentre nós dentro da estrutura.

Propriedades de colunaAs sete propriedades que você pode aplicar em uma coluna são anulação (nullabílí6t),COLLAIE, IDENTITV ROWGUIDCOL, FILESTREÁ,LI, NOT FOR REPLICAUON e SPARSE.

AnulaçãoVocê pode indicar se uma coluna permite valores nulos especificando NULL ou NOTNULL pan as propriedades da coluna. Assim como acontece com todo comando execu-tado, você sempre deve especificar explicitamente cada opção desejada, especialmentequando está criando objetos. Sevocê náo especifrcar aopçã,o deanulação, o SQL Serverusará a opçâo padrãto ao criar uma tabela, o que poderá produzir resultadós inespera-dos. Além disso, não ê. ganntido que a opçáo padrã,o seja a mesma para cadabancode dados, pois você pode modificar isso alterando a propriedade de banco de dadosAAt.çI htrÍÍÍ DFFArilT

Contém as coordenadas de vários elementos Polygon.

Contém as coordenadas de vários elementos LineString.

Contém as coordenadas de vários elementos Pornf.

105

Page 107: Livro_SQL

106 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

COLLATE

As sequências de collation controlam o modo como os caracteres de vários idiomas sáo

manipulados. Quando instala uma instância do SQL Server, você especifica a sequênciade collation padr'ao pan ela. Você pode configurar a propriedade COLLATE de um bancode dados para anular a sequência de collation da instância, a qual o SQL Server aplicaentáo como sequência de collation padrâo para objetos dentro do banco de dados. Assimcomo você pode anular a sequência de coilation padrâo em nível de banco de dados,també,m pode anular a sequência de collation para uma tabela inteira ou para umacoluna individual.

Especificando a opçáo COLLATE para uma coluna alfanumérica, você pode configurarum comportamento especÍfico paÍa o idioma na coluna.

IDENTITYAs identidades sáo usadas para fornecer um valor parauma coluna automaticamentequando dados são inseridos. Você náo pode atualizar uma coluna com a propriedade de

identídade. As colunas com qualquer tipo de dados numérico, exceto;float e real, podemaceitar uma propriedade de identidade, pois você também precisa especificar um valorde propagação e um incremento a ser aplicado paÍa cada linha subsequentemente inse-rida. Em uma tabela, você só pode ter uma coluna de identidade.

As colunas de identidade frequentemente são únicas, mas náo precisam ser. Para tornaruma coluna de identidadeúnica, você deve aplicar uma constraint nela, sobre o que vaiaprender na Lição 2, "Implementando restrições".

Embora o SQL Server forneça o próximo valor da sequência automaticamente, vocêpode inserir um valor em uma coluna de identidade explicitamente, usando o comandoSET IDENTIIY_INSERT <nome da tabela> ON. Yocê também pode mudar o próximovalor gerado modificando a propagaçáo com o comando DBCC CHECKIDENT.

ROWGUIDCOLA propriedade ROWGUIDCOL é usada principalmente pela replicaçáo por mesclagem(merge), para designar uma coluna uÍilizada para identificar linhas exclusivamente nos

bancos de dados. A propriedad e ROWGUIDCOL é usada para gatz'ntir que exista apenas

uma coluna desse tipo e que ela tenha o tipo de dados UNIQUEIDENTIFIER.

FILESTREAM

Os bancos de dados são projetados para armazenar dados distintos e bem estruturados.À medida que a variedade de dados dentro de uma empresa aumenta, a organizaçáoprecisa consolidar dados de todos os formatos dentro de uma única arqtitelura de ar-

mazeîamento. O SQL Server tem a capacidade de aÍmazenat todos os vários dados exis-

tentes dentro de uma empresa, a maioria dos quais existe como documentos, planilhaseletrônicas e outros tipos de arquivos.

Antes do SQL Server 2008, você precisava extrair o conteúdo de um arquivo pata aÍma-zená-lo em um tipo de dados VARBINARY(hIAÐ, VARCHAR(MAX) ou NVtlRCÍ{AR(rnAÐ.Contudo, yocêestavalimitado a armazenar somente 2 GB de dados dentro de um tipo

Page 108: Livro_SQL

de dados grande. Para contornar essa restrição, muitas empresas armazenavam o nomedo arquivo dentro do SQL Server e mantinham o arquivo no sistema operacional. O

principal problema de armazenar o arquivo fora do banco de dados é que era muito fácilmover, excluir ou mudar o nome de um arquivo sem fazer uma aÍualização correspon-dente no banco de dados.

O SQL Server 2008 introduzrrma nova propriedadepara uma coluna, chamada FILES-TREAII. FILESTREAM combina o melhor dos dois mundos. Os objetos binários grandes(BLOBs) armazenados em uma coluna FILESTRE,AM são controlados e mantidos peloSQL Server; entretanto, os dados residem em um arquivo no sistema operacional. Arma-zenando os dados no sistema de arquivos fora do banco de dados, você não está maisrestrito ao limite de 2 GB dos BLOBs, Além disso, quando você faz backup do banco de

dados, o backup de todos os arquivos é feito ao mesmo tempo, garantindo que o estadode cada arquivo permaneça sincronizado com o banco de dados.

Você aplica a propriedade FILESTREAM em colunas com um tipo de dadosVARBLNARY(MAX). A coluna dentro da tabela mantém um identificador de 16 bytespaÍa o arquivo. O SQL Server gerencia o acesso aos arquivos armazenados no sistemaoperacional.

O''O DE EXAME

Capítulo 3 r Tabelas

Um FILEGROUP designado para armazenamento de FILESTREAM fica offline e inacessível den-tro de um Database Snapshot. Além disso, você não pode implementar Database Mirroring emum banco de dados contendo dados armazenados com FILESTREAM.

NOT FOR REPLICATION

A opçáo NOT FOR REPLICATION é usada parauma coluna definida com a propriedadeIDENTIIY. Quando define uma identidade, você especifica o valor inicial, a propagaçáoe um incremento a ser aplicado para gerar o próximo valor. Se você insere explicita-mente um valor em uma coluna de identidade, o SQL Server gera uma nova propaga-

ção automaticamente para a coluna. Se a tabela estâparticipando da replicação, vocênáo vai querer gerar uma nova propagaçã,o para a coluna de identidade sempre que os

dados forem sincronizados. Aplicando a opçáo NOT FOR REPLICATION, o SQL Servernã.o gerarâ uma nova propagaçáo para a coluna de identidade quando o mecanismo de

replicação estiver aplicando alterações.

SPARSE

Projetada para olimizar o espaço de armazenamento de colunas com uma grande por-centagem devalores NULL, a opção para designar uma coluna como esparsa é novidadedo SQL Server 2008.Para designar uma coluna como SPARSE, ela deve permitir valoresNULL. Quando umvalor NULL é, armazenado em uma coluna designada como SPARSE,nenhum espaço de armazenamento é consumido. Contudo, os valores não NULL exigem4 bytes de espaço de armazenamento, além do espaço normal consumido pelo tipo de

dados. A não ser que você tenha uma porcentagem alta o suficiente de linhas conten-do um valor NULL para compensar o maior armazenamento exigido para valores nãoNULL, não deve designar uma coluna como SPARSE.

to7

Page 109: Livro_SQL

108 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Você não pode aplicar a propriedade SPARSE em:

I Colunas com a propriedade ROWGUIDCOL ou IDENTIIY

r Tipos de dados TEXT NTEXT IMAGE, UMESTAME GEOMETRY, GEOGRAPtIY oudefinidos pelo usuário

r Um V,4RBLNARY(MAX) com a propriedadeFILESTREAùI

t Uma coluna calculada de uma coluna com uma regra ou padrãto vinculado a ela

I Colunas que fazem parte de um índice clusterizado ou de uma chave primária

I Uma coluna dentro de uma instrução ALTER TABLE

NOTA Limitação de tamanho de linha

Se o tamanho máximo de uma linha em sua tabela passar de 4.009 bytes, você não poderáexecutar uma instrução ALTER para mudar uma coluna para SPARSE ou adicionar mais umacoluna SPARSE. Durante a instrução AITER, cada linha é novamente computada pela gravaçãode uma segunda cópia da linha na mesma página de dados. Como duas cópias de uma linhaque passa de 4.009 bytes ultrapassariam os 8.01-8 bytes permitidos por página, a instruçãoALTER TABLE falharia.

As únicas soluçöes para esse problema de projeto de armazenamento são as seguintes:

I Reduzir os dados dentro de uma linha de modo que o tamanho máximo da linha sejamaior do que 4.009 bytes

I Criar uma nova tabela, copiar todos os dados na nova tabela, eliminar a tabela antiga e,

então, mudar o nome da tabela recentemente criada

I Exportar os dados, truncar a tabela existente, fazer as alteraçöes e importar os dados devolta para a tabela

Colunas calculadasAs colunas calculadas permitem adicionar em uma tabela colunas que, emvez de serempreenchidas com dados, são calculadas com base em outras colunas da linha. Por exem-plo, você poderia ter um subtotal e um valor de remessa em sua tabela que permitissemcriar uma coluna calculada para o total gerul, que mudaria automaticamente se o sub-total ou o valor de remessa mudassem.

Quando você cria uma coiuna calculada, somente a definição do cálculo é armazenada.Se você usar a coluna calculada dentro de qualquer instrução DML (linguagem de mani-pulaçáo de dados), o valor será calculado no momento da execução. Se náo quiser ficarsujeito à sobrecarga de efefuar o cálculo em tempo de execuçáo, você pode especificar apropriedade PERSISTED. Se uma coluna calculada é PERSISTED, o SQL Server armaze-na o resultado do cálculo na linha e alualiza o valor sempre que os dados dos quais ocálculo depende são alterados.

Page 110: Livro_SQL

Compactação de linha e página

Agora o SQL Server 2008 permite compactar linhas e páginas de tabelas que não têmuma coluna SPARSE, assim como para índices e views indexadas.

A compactação em nível de linha permite compactar linhas individuais para encaixarmais linhas em uma pâgina, o que por suayez reduz a quantidade de espaço de arma-zenamento para a tabela, pois não é preciso armazenaÍ tantas páginas em um disco.Como você pode descompactar os dados a qualquer momento e a operaçáo de compac-tação sempre deve ser bem-sucedida, não pode usar compactaçáo paÍa armazenar maisde 8.060 bytes em uma única linha.

A compactação de pâgîna reduz somente a quantidade de armazenamento em disco ne-

cessária, pois a página inteira é compactada. Quando o SQL Server aplica compactação de

pâgina em um heap (uma tabela sem índice clusterizado), ele compacta apenas as páginasque existem atualmente na tabela. O SQL Server compactaftt dados novos adicionadosem um heap somente se você usar as inslruçoes BULK INSERT ou INSERT INTO. . .WITH(TÆLLOCK). As páginas adicionadas na tabela usando BCP ou uma instrução INSERT quenão especifique uma sugestão de bloqueio detabela não são compactadas.Paracompactarpáginas recentemente adicionadas e não compactadas você precisa executar uma instru-

çáo ALIER TABLE. . .REBUILD com a opçáo de compactaçáo PAGE.

A configuraçáo de compactaçâo para uma tabela náo passa para índices não clusteri-zados ou views indexadas criadas na tabela. Você precisa especificar a compacíaçáopara cada índice não clusterizado ou view indexada que quiser compactar. Se a tabelafor particionada, sobre o que vai aprender no Capítulo 6, "Distribuindo e particionandodados", você pode aplicar compactação em nível de partiçáo.

VARCHARøLAÐ, NVARCHAR(LIAX) e VARBINARY(LIAX) aÍmazenam dados em estru-turas especializadas fon da linha. Além disso, VtIRBINARy(hIAX) com a opção FILES-TREAII armazeÍta documentos em um diretório externo ao banco de dados. os dadosarmazenados fora da linha náo podem ser compactados.

Criando tabelas

Uma parte da sintaxe geral para criaçãto de uma tabela ê:

CREATE TABLE

I nome-banco-de*dados I nome-esquema ] | nome-esquema I nome-tabela( { <definição-coìuna> | <computed-column-definition>

| <definição-coluna-calculada> ][ <constraìnt_tabela> ] t,...n I )

[ 0N { nome_esquema-partìção ( nome-coluna-partição ) | grupo-de-arquìvos

| "default" Ì l[ {TEXT]MAGE-ON { grupo-de-arquivos l "default" } lI FILESTREAM-ON { nome-esquema-part'ição I grupo-de-arquivos

| "default" Ì lI t^l]TH ( <opção_tabel a> [ ,...n ] ) lt ; l

<defìnição-coluna> : :=nome_col una <tì po_dados>

I FILESTREAM ]

Capítulo 3 r Tabelas 109

Page 111: Livro_SQL

110 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

I COLLATE nome_collation ]I NULL I NoT NULL ][ [ CONSTRAINT nome_constra'int ] DEFAULT expressão_constante I I

I I IDENTIW [ ( propagação,incremento ) ] t NOT FOR REPLICATION I lI ROIIìIGUIDCOL ] [ <constraint_coluna> [ ...n ] I t SPARSE l

<tipo de dados>::=I nome_esquema_tipo ] nome_t'ipo

[ ( precisão [, escala ] | max I

[ { C0NTENT I DOCUMENT } ] coleção_esquema_xml ) l<defi nj çäo_col una_cal cul ada> : : =nome_coluna AS expressão_colune_calculadaI PERSISTED I NOT NULL ] ]

<defì nì çäo_confi gu ração_col una> : : :nome_configuração_coluna XML COLUMN_SET FOR ALL_SPARSE_COLUMNS

<opção_tabe"la> :::{ DATA-COMPRESSION =

I ON PARTTTIONS...n I ) tÌNo SQL server 2008, uma tabela padrão pode ter r.024 colunas. contudo, usando anova deflnição de configuração de coluna em conjunto com os novos recursos de colunaesparsa, você pode criaruma tabela com até30.OOO colunas. As tabelas que excedemas 1.024 colunas usando uma definição de configu ração de coluna são referidas comotabelas amplas, mas os dados armazenados em qualquer linha ainda não podem passarde 8.019 bytes, a náo ser que você tenha uma coluna VARCHARøLAX), NVARCHAR(MAX)oUVIIRBINARY(hIAX) definida para a tabela.

Além das tabelas persistentes criadas dentro de um banco de dados, você também podecriar quatro estruturas de tabela adicionais que sáo transientes.

As tabelas temporárias sã.o armazenadas no banco de dados tempdb e podem ser locaisou globais. uma tabela temporária local é designada por um nome que começa com osímbolo # e ê,visível somente dentro da conexão que a criou. Uma tabela femporâriaglobal é designada por um nome que começa com o sÍmbolo ## e é visível em todas asconexões com a instância. Tanto as tabeias temporárias globais como locais são elimi-nadas automaticamente quando a conexáo que as criou termina.

Variáveis detabela podem ser criadas para passar conjuntos de dados dentro de objetoscomo procedimentos armazenados (stored procedures) e funções. As variáveis de tabelapodem ser preenchidas com instruções INSERT UPDATE, DELETE ouMERGE e podematé parlicipar de instruçõesJOIN, como qualquer outrafabela. Uma variável de tabela éuma estrutura residente na memória que é visível somente dentro da conexão que de-clarou avariâvel e perde a alocação depois que o código que a declarou termina.

um novo recurso no sQL server 2008 é o tipo de dados de tabela, que permite criarparâmetros de uma função e de um procedimento armazenado (stored procedure) parapassar conjuntos de dados entre objetos.

t(

NONE I ROl^l I PACE ]{ <expressão_número_partição> | <ìntervalo> } l,

Page 112: Livro_SQL

,ít"rt" rápido1. Como você projeta um banco de dados?

2. Quais sáo as três novas opções que você pode configurar paracolunas, linhasou páginas dentro de uma tabela?

Respostas

1. O princípio que rege o projeto de um banco de dados é "Colocar as coisas em

seu devido lugar". Se a necessidade ê armazenar várias linhas de informaçáoligadas a uma única entidade, você precisa de uma tabela separada paru es-

sas linhas. caso contrário, cada tabela define um objeto principal para o qualvocê deseja atmazenar dados e as colunas dentro databela definem os dados

específicos que deseja aÍmazenar.

2. Yocê pode designar as colunas como SPARSE para otimizar o atmazena-mento de valores NULL. Você pode aplicar a propriedade FILESTREAII em

uma coluna VARBINARY(MAX) para permitir o armazenamento de documen-tos que passem de 2 GB em um diretório no sistema operacional. As linhaspodem ser compactadas para se encaixar mais linhas em uma página. Aspáginas podem ser compactadas para reduzir a quantidade de espaço de

atmazenamento necessário para a tabela, índice ou view indexada.I

capítulo3 r Tabelas 111

PRÁT|CA criando tabelasNeste exercício, você vai criat um esquema para armazenar um conjunto de tabelas.Você também vai adicionar restrições e configurar as opções de armazenamento para

linhas e páginas dentro de uma tabela.

1. Execute o código a seguir paru uiar o esquema de teste no banco de dados Adven-tureWorþs:

USE AdventurelVorksGO

CREATE SCHEMA test AUTHORIZATION dboGO

2. Execute o código a seguir para criar uma tabela com uma coluna IDENTITV e umacoluna SPARSE:

CREATE TABLE test.Customer(CustomerlD INT IDENTITY(]-,1-),LastName VARCHAR(50) NOT NULL,

FirstName VARCHAR(5O) NOT NULL,

CTeditline MONEY SPARSE NULL,

creatjonDate DATE NoT NULL)

c0

Page 113: Livro_SQL

tt2 Kit de Treinamento MCTS (Exame70-432): Microsoft SeL Server 2008

3. Execute o código a seguir para criar uma tabela com uma coluna calculada e com-pactaçáo de linha:

CREATE TABLE test.OrderHeader(0rde rIDCustomerlD INTOrderDateOrderTime TTME

I4IITH (DATA_COMPRESSION = ROt^t)

GO

Resumo da lição

SubTota.lShi ppì ngAmt MONEY

0rde rTotal

ÏNT

I os esquemas permitem agrûpar objetos relacionados, assim como fornecem umcontêiner de segurança para objetos.

r A decisáo mais importante que você pode tomar ao projetar uma tabela é o tipo dedados de uma coluna.

I Você pode usar uma definição de configuração de coluna junto com colunas espar-sas para criar tabelas com até,50.000 colunas.

r Tabelas, índices e views indexadas podem ser compactados usando-se compactaçáode linha ou de página; no entanto, a compactaçáo náo é, compatívelcom ajcoluñasesparsas.

Revisão da liçãoResponda a pergunta a seguir paratestil seu conhecimento sobre a Liçáo 1. A perguntatambém está disponível no CD do livro (em inglês) se você preferir rcvisâ-la em formatoeletrônico.

DATE

MONEY NOT NULL,

IDENTITY(1-, 1) ,

NOT NULL,NOT NULL,NOT NULL,

AS (SubTotal + ShippingAmt))NOT NULL,

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas,,no final dolivro.

1. Quais opções não sáo compatíveis com a compactação de linha ou de página? (Es-colha duas. Cadauma forma uma resposta separada.)

A. Uma coluna com o tipo de dados VARCHAR(MAX)

B. Uma coluna esparsa

c.

D.

Uma tabela com uma configuração de coluna

Uma coluna V,4RBLNARY(MAX) com a propriedade FILESTREA,\|,I

Page 114: Livro_SQL

Lição 2: Implementando constraintsAs constraints são empregadas para impor regras empresariais, assim como consistên-cia nos dados. Nesta lição você vai aprender sobre constraints e como implementar cadatipo de constrant dentro do banco de dados.

Após esta lição, você será capaz de:

I Criar uma chave primária

I Criar uma chave estrangeira

I Criar uma constraint exclusiva

I lmplementar uma constraint padrão

I Aplicar uma constraint de verificação

Tempo estimado para a lição:40 minutos

Chaves primáriasVocê só pode ter uma constraint de chave primâria definida paÍa uma tabela. A, chaveprímáría define a coluna (ou colunas) que identifica exclusivamente cadalinha da tabe-la. Você deve especificar todas as coiunas dentro da chave primária como NOT NULL.

Quando cria uma chave primária, você também especifica se ela é agrupada ou nãoagrupada (clustered ou nondustered). uma chave primáriaagrupada, o comportamentopadrão do SQL Server, faz o SQL Server armazenat a fabela em ordem classificada deacordo com a chave primâria.

Capítulo 3 r Tabelas

ffi orcn DE ExAME\g¿'v

A opção padrão para uma chave primária é agrupada. Quando uma chave primária agrupadaé criada em uma tabela que é compactada, a opção de compactação é aplicada na chave pri-mária quando a tabela é reconstruída.

113

Chaves estrange¡ras

Você usa chaves estrangetras (foreignkeys) para implementaÍ integridade referencialentre tabelas dentro do banco de dados. Criando chaves estrangeiras, você pode garantitque tabelas relacionadas não contenham linhas órfás inválidas. As chaves estrangeirascriam o que é referido como reTação pai-filho entre duas tabelas e garantem que um va-lor que náo exista na tabela pai não possa ser gravado na fabela filho. Por exemplo, nãofaria nenhum sentido ter um pedido de um cliente que não existe.

Pa;a criar uma chave estrangeira entre duas tabelas, atabela pai deve ter uma chaveprimâria, aqual é usada para se referir à tabela filho. Além disso, os tipos de dadosentre a coluna (ou colunas) pai e a coluna (ou colunas) filho devem ser compatíveis. Sevocê tiveruma chave primâria devárias colunas, todas as colunas da chave primâriapai devem existir na tabela filho para defrnir uma chave estrangeira.

Page 115: Livro_SQL

1,L4 Kit de Treinamento MCTS (Exame70-432} Microsoft SQL Server 2008

CUIDADO Propagação em cascata

Uma das opções para uma chave estrangeira é CASCADE. Você pode configurar uma chaveestrangeira de modo que as modificaçöes na tabela pai sejam propagadas em cascata para atabela filho. Por exemplo, quando você exclui um cliente, o SQL Server também exclui todosos pedidos associados ao cl¡ente. A propagação em cascata é uma ideia extremamente ruim. É

muito comum ter chaves estrangeiras definidas entre todas as tabelas dentro de um banco dedados. Se você executasse uma instrução DELETE sem uma cláusula WHERE na tabela errada,poderia eliminar cada linha em cada tabela dentro do banco de dados muito rapidamente.Deixando a opção CASCADE desligada para uma chave estrangeira, se você tentar excluir umalinha pai referenciada, obterá um erro.

Constraints exclusivasA.constraínts exclusivns (uníque) permitem definir uma coluna ou colunas para as quaisos valores devem ser exclusivos dentro da tabela. Entradas duplicadas não são permi-tidas. Por exemplo, talvezvocê. quisesse garantir que não tem nenhum nome de clienteduplicado em seu banco de dados. Embora uma constraint exclusiva seja semelhante auma chave primária, a constraint exclusiva permite valores NULL.

DICA DE EXAME

Embora um valor NULL não seja igual a outro valor NULL e valores NULL não possam ser com-parados, uma constraint exclusiva trata um valor NULL como qualquer outro valor de dados.Se a constraint exclusiva é definida em uma única coluna, então uma única linha dentro databela pode ter um valor NULL dentro dessa coluna. Se a constraint exclusiva é definida emmais de uma coluna, então você pode armazenar valores NULL dentro das colunas, desde quenão produza uma duplicata na combinação de valores NULL e dos valores de dados reais.

Constraints padrão

As constrûínts padrã.o permitem especificar um valor que é gravado na coluna se oaplicativo não fornecer nenhum valor. As constraints padr'ao se aplicam apenas àsnovas linhas adicionadas com uma instrução INSERT BCP ou BULK INSERT. Yocêpode definir constraints padrão para colunas NULL ou NOT NULL Se uma colunatem uma restrição padrão e um aplicativo passa um valor NULL para a coluna, osQL server grava um valor NULL na coluna, emvez do valor padráo. o sel servergtavatâ o valor padrã,o na coluna somente se o aplicativo não especiltcar a coluna nainstruçáo INSERT.

Constraints de verificaçãoAs constraínts de vø!ficaçõo (check) limitam o intervalo de valores dentro de uma co-luna. As constraints de verificação podem ser criadas em nível de coluna e não podemreferenciar nenhuma outra coluna natabela. As constraints de verificação em nível detabela podem referenciar qualquer coluna dentro de uma tabela, mas não podem refe-renciar colunas em outras tabelas.

Page 116: Livro_SQL

A avaliação de uma constraint de verifïcação deve retornar um valor verdadeiro ou falso.Nenhum outro estado é permitido para a avaliação. Os dados que passam na constraintde verificação podem entrar na tabela ou coluna, enquanto os dados que não passam naconstraint de verificação s-ao releitados e um erro é retornado para o aplicativo.

As constraints de verificação podem utilizar comparações simples, como >, (, ):,<:, < > e :. Você pode criar constraints de verificação mais complexas por meio detestes múltiplos, usando AND, oR e Nor As constraints de verificaçã,o também podemusar os curingas % e _, assim como executar rotinas de correspondência de padrão. porexemplo, você poderia criar a seguinte constraint de verificaçã o para impor um formatoválido para um número de registro na Social Security dos EUA, que consiste em trêsdígitos, um traço, dois dígitos, um traço e qua:,1:o dígiros:

cHECK (col umnl- LIKE ' t0-91 t0-91 t0-91 - t0-91 t0-91 - ¡9-91 to-91 t0-91 [0-9] ')

r/ Teste rápido

1. Qual é a diferença entre uma chave primária e uma constraint exclusiva?2. Quais constraint atabela pai tem ao se criar uma chave estrangeira?

Respostas

1. Uma chave primária não permite valores NULL.

2. Atabela pai deve ter uma chave primária, que é usada para definir a relaçãoentre as tabelas pai e filho. Além disso, se a chave primária do pai é definidaem várias colunas, todas as colunas devem existir natabela filho para que achave estrangefta seja criada.

Capítulo 3 r Tabelas

PRÁTtcA lmplementando constra¡ntsNeste exercício, você vai adicionar constraints nas tabelas que criou na Liçáo 1.

1. Execute o código a seguir para adicionar chaves primárias nas tabelas Customer eOrderHeader:

ALTER IABLE test.CustomerADD CONSTRAINT pk_customer PRIMARY KEy CLUSTERED (CustomerID)

GO

ALïER TABLE test.0rderHeaderADD C0NSTRAINT pk_orderheader PRIMARY KEy CLUSTERED (OrdertD)

GO

2. Execule o código a seguir para adicionaruma chave estrangeira entre as tabelasCustomer e OrderHeader:

ALTER TABLE test.OrderHeaderADD CONSIRAINT fk-orderheadertocustomer FOREIGN KEY (CustomerfD)

REFERENCES test.Customer (CustomerfD)GO

11s

Page 117: Livro_SQL

116 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

3. Execute o código a seguir para implementar padrões para as colunas CreationDatee OrderDate:

ALTER TABLE test.CustomerADD CoNSTRAINT df_crearjondate DEFAULT (GETDATEO) FoR CreationDate

GO

ALTER TABLE test.OrderHeaderADD CONSTRAINT df_orderdate DEFAULT (GETDATEO) fOn 0rderDate

c0

4. Execute o código a seguir para adicionar uma constraint de verificaçáo na colunaSubTotal:

ALTER TABLE test.OrderHeaderADD CONSTRAINT ck_subtotal CHECK (SubTotal > 0)

c0

Resumo da lição

r Uma chave primária define a coluna (ou colunas) que identifica exclusivamentecada linha em uma tabela.

r As chaves estrangeiras são usadas para impor integridade referencial entre tabelas.

r As constraints padrão fornecem um valor quando o aplicativo não especifica ne-

nhum para uma coluna.

I As constraints de verificaçáo iimitam os valores aceitáveis para uma coluna.

Revisão da lição

Responda a pergunta a seguir parafestar seu conhecimento sobre a Liçáo 2. ApeÍg;rrlatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. Colunas com quais propriedades não podem ser esparsas? (Escolha duas. Cada umaforma uma resposta separada.)

A. FTLESTREAM

B. NULL

C. NOT FOR REPLICATION

D. COLLATE

Page 118: Livro_SQL

Revisão do capítuloParareforçar o que aprendeu neste capítulo, você pode:

r Ler o resumo do capítulo.

r Examinar a lista de termos-chaveinúoduzidos neste capítulo.

r Completar o cenário de caso. Esse cenário aborda situações reais que envolvem ostópicos deste capítulo e solicita que você crie uma solução.

I Completar as práticas sugeridas.

a Fazer um teste.

Resumo do capítulor As tabelas formam a base de todo banco de dados criado, com a escolha dos tipos

de dados paru cada coluna sendo a decisáo de desempenho mais importante quevocê toma.

r Você pode designar colunas como SPARSE para otimizar o aÍmazenamento quandoum grande número de linhas contêm um valor NULL para uma coluna.

r A compactaçáo de linha e de pâgina pode economizat espaço de armazenamento emelhorar o desempenho do processamento de dados.

r As chaves primárias devem ser criadas nas tabelas para identificar exclusivamentecada linha dentro de uma tabela.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando oglossário no final do livro.

I Constraint de verificação

I Constraintpadrão

I FILESTREAM

I chave estrangeira

r Coluna de identidade

I Chave primâria

I Esquema

I Coleção de esquemas

r Coluna esparsa

I Constraint exclusiva

Capítulo 3 r Tabelas tt7

Page 119: Livro_SQL

118 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Cenário de caso

No cenário de caso a seguir, você vai aplicar o que aprendeu neste capítulo. As respostas

dessas questões podem ser encontradas na seçáo "Respostas", no final deste livro.

Cenário de caso: Executando tarefas de gerenciamento de dadosA Wide World Importers está implementando um novo conjunto de aplicativos para ge-

renciar vârias linhas de negócio. Dentro do centro de dados corporativo, ela precisa da

capacidade de armazenar grandes volumes de dados que podem ser acessados a partirde qualquer lugar do mundo.

Vários gerentes empresariais precisam acessar relatórios operacionais que abordam acarga de trabalho atual de seus funcionários, junto com pedidos novos e pendentes dos

clientes. os mesmos gerentes empresariais também precisam acessar grandes volumes

de dados históricos para identiflcar tendências e otimizar seus níveis de provimento de

pessoal e estoque.

Os gerentes empresariais querem eliminar todos os manuais incluídos com seus produ-

tos e, em vez disso, encaminhar os usuários para o site da empresa. os usuários devem

ser capazes de examinar os manuais com base no produto ou procurar texto dentro de

um manual. A equipe de vendas também gostaria de melhorar o site da empresa, permi-

tindo que descrições de produto sejam criadas e pesquisadas em vários idiomas.

Uma grande equipe de vendas fazTigações para clientes do mundo todo e precisa aces-

sar dados sobre os clientes que um representante de vendas está atendendo, junto com

prováveis compradores em potencial. Os dados para a equipe de vendas precisam estar

disponíveis mesmo quando os vendedores náo estão conectados na Internet ou na rede

corporativa. Periodicamente, os representantes de vendas se conectam na rede corpota-tiva e sincronizam seus dados com os bancos de dados corporalivos.

Uma variedade de aplicativos Windows foi criada com o Visual Studio.NET e todo aces-

so a dados é feito usando-se procedimentos armazenados (stored procedures). O mesmo

conjunto de aplicativos é implantado para os usuários que se conectam diretamente no

servidor do banco de dados corporativo, assim como para os representantes de vendasque se conectam em seus próprios servidores de banco de dados locais.

1. Como você deve projetar as tabelas para permitir que os manuais de produto sejam

armazenados dentro do banco de dados?

2. Comovocê deve proje1ar a tabela para conter descriçóes de produto em vários idio-mas?

3. Como você deve projetar as tabelas de modo que possa designar clientes para os

representantes de vendas, ao passo que também ganîta que um cliente não possa

ser designado a um representante que náo exista?

Page 120: Livro_SQL

Práticas sugeridasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

Criando tabelas

r Exercício 1 Insira uma linha na tabela Customer e examine o valor de Custome-rID. A-ltere a ptopagaçãto, o incremento da coluna de identidade ou ambos. Insiramais linhas na tabela Customer table e examine o valor (ou valores) de CustomerlD.Você obteve os valores de CustomerlD que esperava?

Criando constraintst Exercício 1 Tente inserir um cliente sem especificar um sobrenome. Você recebeu

o resultado que esperava?

r Exercício 2 Tente inserir um pedido com CustomerlD inválido. O que acontece?

r Exercício 3 Quando você insere um novo pedido ou um novo cliente, o que obtémpara CreafionDate ou OrderDate?

r Exercício 4 Tente inserir um pedido com um subtotal negativo. O que acontece?

Capítulo 3 r Tabelas

Faça um testeOs testes do CD deste livro (em inglês) oferecem muitas opções. Você pode fazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-ficação 70-432. É possível configurar o teste para que ele simule a experiência de fazerum exame de certificaçãto ou configurá-lo no modo de estudo (study mode) para ver asrespostas corretas e explicações depois de cada questão.

119

MA|S TNFORMAçöES Testes

Para mais detalhes sobre todas as opçöes de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

Page 121: Livro_SQL
Page 122: Livro_SQL

No Capítulo 5, "Tabelas", você aprendeu sobre as principais considerações relativas aoprojeto de um banco de dados flexível e de alto desempenho. Depois de ter o melhorprojeto de tabela, você precisa projetar índices eflcientes para consultar quaisquer dadosarmazenados de maneira eficaz. Neste capítulo, você vai aprender sobre a arquitetu-raintetna de um índice, assim como a construir índices clusterizados (clustered), náoagrupados (nonclustered), XML (Extensible Markup Language) e espaciais. Depois, vocêvai aprender a gerenciar e manter os índices para ganîtir o máximo desempenho.

Objetivo de exame neste capítulo:

r Manter índices.

Liçöes deste capítulo:

r Liçáo 1: Arquitetura dos índices 123

r Lição 2:Projetando índices 129

r Lição 3: Mantendo índices 14O

Antes de começarPat.a fazer as lições deste capítulo, você deve ter:

r o Microsoft SQL Server 2008 instalado

r o banco de dadosAdventureWorks instalado dentro da instância

Page 123: Livro_SQL

L22 Kit de Treinamento MCTS (Exame70-432} Microsoft SQL Server 2008

@ tunao real

Míchael Hotek

Um de meus clientes tinha um ambiente de data warehouse de tamanho médio,que era usado para pavtaÍ muitas decisões sobre preço e produto da empresa. Umayez por mês, eles recebiam dados de vários sistemas de origem. Os dados maisrecentes eram combinados com todos os dados anteriores em um servidor temporâ-rio. Depois de importarem os dados, eles executavam vários processos para calcularagregados, obter tabelas, transformar dados em tabelas de fatos e dimensão, e des-normalizat os dados para serem usados em atividades de consulta subsequentes.

o problema empresarial fundamental era desempenho e disponibilidade de dados.Para começar a melhorar a situação, eles concluíram um projeto de vários mesespara substituir todos os servidores, a rede e o armazenamento SAN (storage areanetwork), a um custo de mais de U$1 milhão.

Quando todo o hardware novo estava instalado, o processamento caiu para entre12 e 16 dias. Alguns processos levavam de 1.2 a 18 horas. Um de seus consultoresanalisou os bancos de dados e determinou que muitos Índices estavam seriamentefragmentados. No curso de cerca de duas semanas, eles desfragmentaram os Ín-dices, assim como adicionaram vários outros a mais. No processo, eles disseramao cliente que o desempenho melhoraria com as mudanças que estavam sendoimplementadas. o cliente ficou contente por estar "finalmente obtendo ajuda" e

pelo fato de que seus problemas eram "culpa do SQL Server".

Entretanto, durante o mês seguinte houve muito pouca melhoria no processamen-to das rotinas.

A análise determinou que os índices estavam novamente quase completamentefragmentados. O que o consultor náo levou em conta foi o fato de que o proces-

samento das rotinas manipulava praticamente o conteúdo inteiro de cada tabeladentro do banco de dados. Náo importa quanto empenho fosse empregado na des-fragmentaçáo dos índices, da maneira que o processamento das rotinas foi escritoo SQL Server não iria tirar proveito de muitos índices e eles apenas aumentavam asobrecarga em muitas das rotinas.

Uma análise mais detalhada encontrou um monte de problemas. Os tipos de dadosusados nas junções náo correspondiam, cláusulas GROUP BY foram adicionadasem dezenas de consultas que não continham um agregado, tabelas temporárias es-

tavam sendo preenchidas com milhões de linhas de dados e jamais ercmutilizadas,tabelas temporárias com dezenas ou centenas de milhões de linhas eram criadaspaÍa gerar outras tabelas temporárias que geravam outras tabelas temporárias,insÍuçóes INSERT . .SELECT tinham cláusulas ORDER BY junções estavam sendofeitas em cálculos, os projetos de tabela não eram eficientes, e a lista prosseguia.

A moral da história é que, embora os índices sejam projetados para melhorar o

desempenho de operações de recuperação de dados, eles sozinhos náo podem su-perar um código ineficiente ou projetos de tabela ineficientes.

Page 124: Livro_SQL

Lição 1: Arquitetura dos índicesOs índices sáo projetados para que você possa encontrar a informaçáo que está pro-curando dentro de um vasto volume de dados com a execuçáo de apenas um númeromuito pequeno de operações de leitura. Nesta lição você vai aprender sobre a estruturainterna de um índice e também o modo como o SQL Server constrói e manipula índices.De posse dessa informação estrutural, você pode tomar decisões melhores sobre o nú-mero, o tipo e a definiçáo dos índices que vai criar.

Após esta lição, você será capaz de:

I Entender como uma B-Tree é construída e mantida

Capítulo 4 r Projetando índices do SQL Server

I Entender por que o SQL Server usa uma estrutura de B-Tree para índices

Tempo estimado para a lição: 20 minutos

Estrutura dos índices

O SQL Server não precisa ter índices em uma tabeTapara recuperar dados. Uma tabelapode simplesmente ser percorrida pan se encontrar os dados necessários. Contudo, otempo gasto para encontrar dados é diretamente proporcional ao volume de dados pre-sentes na tabela. Como os usuários querem aÍmazenar cadavez mais dados em uma ta-bela, assim como ter um desempenho de consulta consistente, independente do volumede dados, você precisa empregar índices para atender as necessidades dos aplicativosque todas as empresas utilizam.-

Os índices não são um conceito novo; nós os utilizamos diariamente. No final deste li-vro, você enconlratâ um índice em forma impressa. Se quiser ler a respeito de clustering(agrupamento), você pode encontrar ainformaçáo de duas maneiras diferentes. Vocêpoderia abrir este livro, começar na pâgina 1 e ler cada pâgina até, chegar ao Capítulo14, "failover clustering", eTocalizar a informaçã,o específica que precisasse. Você tam-bém poderia abrir o índice no final do livro, localizar o verbete cluster (agrupamento)e, em seguida, ir atê, apâgina correspondente no livro. Um ou outro modo atingiria seuobjetivo, mas o uso do índice permite que você localize a informação desejada exami-nando o menor número de páginas possÍvel.

Um índice só será útil se puder oferecer um meio para encontrar dados muito rapida-mente, independente do volume de dados que estejam armazenados. Dê uma olhadano índice no final deste livro. Ele contém apenas uma pequena amostra das palavrasexistentes no livro, de modo que proporciona uma maneira muito mais compacta deprocurar informações. O índice esrâ organizado em ordem alfabética, uma maneira na-furaT para os seres humanos trabalharem com palavras, a qual permite eliminar umagrande porcentagem das páginas do livro para encontrar a informação necessária. Alémdisso, ele permite que você vá direto ao termo que está procurando; depois de encontrarapalavra, você sabe que não precisa procurar mais. O SQL Server organiza índices demaneira muito parecida.

123

Page 125: Livro_SQL

t24

B-Trees

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

A estrutura utiTizada pelo SQL para construir e manter índices é chamada de B-Tree. Um

exemplo de B-Tree aparece na Figura 4-1 .

lntermediário

Figura 4-1 Estrutura de B-Tree.

Uma B-Tree é constituída de um nó-raiz que contém uma única pâgina de dados, uma

ou mais páginas de nível intermediário opcionais e uma ou mais páginas de nível folha

opcionais. O conceito básico de uma B-Tree pode ser encontrado na primeira palavra do

nome: balanced, ou balanceada. Uma B-Tree é sempre simétrica, com o mesmo número

de páginas nas metades esquerda e direita em cada nível.

As páginas de nível folha contêm entradas classificadas na ordem que você especificou.

Os dados no nível folha contêm toda combinação de valores dentro da coluna (ou colu-

nas) que está sendo indexada. O número de linhas de índice em uma página é determina-

do pelo espaço de armazenamento exigido pelas colunas que estáo definidas no índice.

NOTA Armazenamento de entrada de índice

No SQL Serve[ as páginas podem armazenar até 8.060 bytes de dados. Portanto, um índice

criado em uma coluna com tipo de dados /Nf pode armazenar 2.015 valores em uma única

página dentro do índice, enquanto um índice baseado em uma coluna com tipo de dados

datetime2 só pode armazenar cerca de metade desses valores por página, ou 1.007 valores

por página.

Os níveis Íaiz e intermediário do índice são construídos pegando-se a primeira enftada

de cada pâgina no nível abaixo, junto com um ponteiro para a pá,gina de onde o valorde dados veio, como mostrado naFtgua 4-2.

Uma consulta percorre a pâgina raiz até encontrar uma página que contenha o valorque está sendo procurado. Entáo, ela usa o ponteiro da pâgina para pular para o pró-

ximo nível e percorre as linhas dessa página alé encoîtrar uma página que contenha

os dados que estão sendo procurados. Em seguida, ela repete o processo nos níveis

subsequentes, até atingir o nível folha do índice. Nesse ponto, a consulta localizou os

dados necessários.

Page 126: Livro_SQL

CidadelCidade34

Figura 4-2 Construindo os níveis intermediários e ra¡2.

Capítulo 4 r Projetando índices do SQL Server

Por exemplo, se você estivesse procurando CidadelS2 na B-Tree representada na Fi-gura 4-2, a consulta começaria no nível raiz e perconeria as linhas. Como Cidade732está entre Cidadel2I e Cidade190, o SQL Server calcularia que Cidade132 possivel-mente seria encontradaîapâgina que começa com Cidade12l.Então, o SeL Serveriria para a páLgiîa de nível intermediário que começa com Cidadel2l . Ao percorrer apâgina, o SQL Server determinaria novamente que Cidade132 estâ entre Cidade'L.21. e

Cidade150; portanto, iriapala apâgioa de nível folha que começa comCidadeT2l epercorreria essa página alê Cidadel32 ser Tocalizada. Como essa é a pâgina de nívelfolha, não existem mais páginas para procurar os dados necessários. Se Cidadell2não existisse na tabela, o SQL Server não encontraúa uma entrada para Cidadel12.Assim que ele lesse a entrada de Cidade133, determinaria que o valor de Cidade712náo poderia estar contido mais abaixo napâgina e a consulta relornaria sem nenhumresultado encontrado. Você deve notar que, a partir da estrutura mostrada aqui, oSQL Server precisa ler no máximo apenas três páginas paraTocalizar qualquer cidadedentro do banco de dados.¿.E isso que significa ter uma B-Tree. Toda busca realizada pelo SQL Server sempre passapelo mesmo número de níveis no índice, assim como pelo mesmo número de páginas noíndice, parulocalizar os dados desejados.

Níveis de índiceO número de níveis em um índice e o número de páginas dentro de cada nível de umíndice sáo determinados por matemática simples. No SgL Server, uma página de dadostem tamanho de 8.192 bytes, os quais podem ser usados para armazeîat até 8.060bytes de dados do usuário. Com base no número de bytes necessários pana armazenaruma chave de índice, determinado pelo tipo de dados, você pode calcular o número delinhas por página que são armazenadas usando divisáo simples.

O exemplo a seguir descreve náo apenas como um índice é construído, mas também oscálculos de tamanho para um índice. Ele dá uma ideia de como pode ser valioso utilizarum índice para encontrar dados dentro de tabelas muito grandes, assim como explicapor que o tempo gaslo para encontrar dados não varia muito, mesmo que o tamanhode um banco de dados aumente substancialmente. Evidentemente, o tempo necessáriopanlocalizar dados também depende da escrita de consultas eficientes:'

125

Cidade190Cidade220

Page 127: Livro_SQL

L26 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Se você construir um índice em uma coluna INT cada linha da tabela exigirâ 4bytes de

armazenamento no índice.

Se a tabela contém apenas 1.200 linhas de dados, você precisa de 4.800 bytes de arma-

zenameîto. Como todas as entradas caberiam em uma única pâgina de dados, o índice

teria uma (tnica pâgina que seria taîto a pâgina raiz como a pâgina folha. Na verdade,

você poderia armazeîar 2.015 linhas na tabela e ainda alocar somente uma página

pan o índice.

Contudo, assim quevocê adicionasse a 2.O76a linha, todas as entradas não caberiam

mais em uma única página, de modo que duas páginas adicionais seriam alocadas para

o índice, em um processo chamado de divisáo de pâgina (page splittíng) . A pâgina taizexistente é empurrada para baixo na estrutura para se tornaÍ uma página de nívelfo-lha. O SeL Server pega metade dos dados dapâgina de índice e os coloca em uma das

páginas recentemente alocadas. A outra pâgina nova é alocada no topo da estrutura do

índice para se tornar a nova pâgina raiz. Aúltima etapa no processo é pegat a primeira

entrada em cada uma das páginas de nível folha e gravx as entradas na pâgina nizrecentemente criada. Agora você tem um índice com uma página raiz e duas páginas de

nível folha. Esse índice náo precisa de um nível intermediário, pois a páginaraizpodeconter todos os valores no início das páginas de nível folha. Nesse ponto, localizar qial-quer linha na tabela exige percorrer exatamente duas páginas no índice.

NOTA Divisöes de página

Lembre-se de que as linhas de uma página de índice são mantidas em ordem classificada;

portanto, o SQL Server sempre grava todas as novas entradas na posição classificada correta

quando da divisão de página. lsso pode fazer com que linhas se movam entre páginas e as

divisöes de página podem ocorrer em qualquer nível dentro da estrutura de armazenamento.

Você pode continuar a adicionar linhas na tabela, sem afetar o número de níveis no

índice, atê, atingir 4.060.225linhas. Então, você fetá 2.015 pâginas de nível folhacom 2.075 entradas cada uma. Apâgina raiz terâ 2.01.5 enÍradas correspondentes à

primeira linha em cada uma das páginas de nível folha. Portanto, pata o SQL Server

encontrar qualquer linha dentro das 4.060.255 linhas da tabela, seria necessârio letexatamente duas páginas. Quando a 4.060.2264 linha de dados ê adicionada na tabe-

la, outra pâgina precisa ser alocada para o índice no nível folha, mas apágina taiz não

pode conter 2.016 entradas, pois isso a faria exceder os 8.060 bytes permitidos. Assim,

o SQL Server passa por um processo de divisáo de página. Agora, a pâgina de nível nizanterior se torna uma página de nível intermediário, com uma segundapá'gina alocada

no nível intermediário. ,t antiga pâgina raiz sofre uma divisáo de página para mover

metade das entradas para a páqina de nível intermediário recentemente alocada e a

primeira entrada em cada uma das duas páginas de nível intermediário é gravada na

pâgina raiz recentemente alocada.

A próxima vez que o SQL Server precisa introduzir um nível intermediário ocorre quan-

do precisa adicionar a8.78l.353.376aLinhade dados naíabela-2.015linhas napâ-ginaraizcorrespondendo a2.075 páginas no nível intermediário, cada uma das quais

tend,o 2.015 entradas correspondendo a2.015 páginas no nível folha, mais uma linhade dados extra que não caberâ.

Page 128: Livro_SQL

Como você pode ver, esse tipo de estrutura permite que o SQL Server localize linhas emtabelas extremamente grandes muito rapidamente. Nesse exemplo, encontrar uma linhana labeTa com pouco mais de 4 milhões de linhas exige que o SQL Server percorn ape-nas duas páginas de dados e afabela poderia crescer para mais de 8 bilhões de linhasantes de exigir que o SQL Server lesse três páginas para encontrar qualquer linha.

@ o,.o DE EXAME

Se você estiver criando um índice em uma coluna esparsa, deve usar um índice filtrado paragerar o índice mais compacto e eficiente possível.

Capítulo 4 r Projetando índices do SQL Server

t't"rt" rápido

1. Que tipo de estrutura o SQL Server utiliza para construir um índice?

2. Quais são os três tipos de páginas dentro de um índice?

Respostas

1. O SqL Server usa uma estrutura de B-Tree para índices.

2. Um índice pode conter páginas raiz, intermedifuias e folha. Um índice temuma única pâginaruiz definida no topo da estrutura. Um índice pode ter umou mais níveis de páginas intermediárias, mas isso é opcional. As páginasfolha são as de nível mais baixo dentro de um índice.

Resumo da lição

a Cada índice tem uma única pâgina de nível raiz e se todas as entradas náo couberemem uma (tnica pâgina, o índice poderâ criar páginas nos níveis intermediário e folha.

Revisão da lição

Responda a pergunta a seguir para testar seu conhecimento sobre aLiçâo 1. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisála em formatoeletrônico.

r O SQL Server cria um índice usando uma estrutura de B-Tree.

t27

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. A Fabrikam armazena informações de produto na seguinte tabela:

CREATE TABLE(ProductIDProductNameSKU

Cost

Products. ProductINTVARCHAR(30)

CHAR(8)MONEY

IDENTTTY(I,1_) ,

NOT NULL,

NOT NULL,

NOT NULL,

Page 129: Livro_SQL

1.2A Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

ListPrice M0NEY NOT NULL'

ShortDescriptjon VARCHAR(200) NOT NULL,

LongDescrì ptì on VARCHAR(MAX) NULL '

CONSTRAINT pk-product PRIMARY KEY CLUSTERED (ProductID))

A tabela é consultada por ProductlD, ProductName ou SKU. O aplicativo exibe

ProductName, SKtl, LístPríce e ShortDescriptíon. ProducilD também é retorna-

do para facilitar as operações subsequentes. Milhares de novos produtos foram

acrèscentados recentemente e agora você tem degradação no desempenho. Que

índice você deve implem entar paÍa proporcionar a mâxima melhoria no desempe-

nho de consultas?

A. CREATE NONCLUSTERED INDEX idx-product ON Products.Product (ProductlD,

ProductName, SKU)

B. CREATE NONCLUSTERED INDEX idx-product ON Products.Product (Product-

Name)

C. CREATE NONCLUSTERED INDEX idx_product ON Products.Product (Product-

Name) INCLUDE (SKU, ListPrice, ShortDescription, ProductlD)

D. CREATE NONCLUSTERED INDEX idx_product ON Products.Product (Product-

Name, SKU, ProductlD, ListPrice, ShortDescription)

Page 130: Livro_SQL

Lição 2: Projetando índicesOs índices permitem consultar eficientemente grandes volumes de dados dentro de umbanco de dados. Nesta lição, você vai aprender a criar índices clusterizados (clustered)e não clusterizados (nonclustered), assim como por que cada tipo de índice ê útil. Você

vai aprender a criar índices filtrados e índices com colunas incluídas para aumentar onúmero de consultas que podem ser abrangidas pelos índices. Por fim, você vai apren-der a criar índices XML e espaciais para melhorar os recursos de pesquisa em documen-tos XML e aplicações espaciais.

Capítulo 4 r Projetando índices do SQL Server

Após esta lição, você será capaz de:

I Criar índices clusterizados

I Criar índices não clusterizados

I Entender os ponteiros de encaminhamento

I Criar índices filtrados

I Especificar colunas incluídas para um índice não clusterizado

I Criar índices XML

I Criar índices espaciais

Tempo estimado para a lição: 30 minutos

índices clusterizadosVocê pode definir um índice usando uma ou mais colunas na tabela, a chamada chave

de índice, com as seguintes restrições:

r Você pode definir um índice com no máximo 16 colunas.

I O tamanho máximo da chave de índice é de 900 bytes.

A coluna (ou colunas) definida para o índice clusterizado ê referida como chave de clus-ter O índíce clustertzado é especial, pois faz o SQL Server organizar os dados na tabelade acordo com a chave de cluster. Como a tabela náo pode ser classificada de mais de

uma maneira, você só pode definir um índice clusterizado em uma tabela.

os índices cluslerizados fornecem uma ordem de classificação para o armazenamenlode dados dentro de uma tabela. Contudo, um índice clusterizado não fornece uma or-dem de classificaçáo ffsica. Um índice clusterizado não armazena os dados fisicamenteno disco em uma ordem classificada, pois isso criaria um grande volume de I/O (entradae saída) de disco pan operaçóes de divisáo de pâgina. Emvez disso, um índice cluste-úzado garante que o encadeamento de páginas do índice seja classificado logicamente,permitindo ao SQL Server percorrer o encadeamento de páginas diretamente paruloca-lizar dados. À medida que o SQL Server percorre o encadeamento de páginas do índiceclusterizado, cada linha de dados é lida na ordem da chave de cluster.

Como o nível folha de um índice clusteizado é a linha de dados na tabela, quando oSQL Server tiver percorrido o índice clusterizado até o nÍvel folha, terâ recuperado os

dados. Nenhuma leitura adicional é necessária paralocalizar os dados necessários.

129

Page 131: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 200g

Em geral, toda tabela deve ler um índice clusterizado. Um dos principais objetivos deum índice clusterizado é eliminar os ponteiros de encaminhamento.

Ponteiros de encaminhamento

uma tabela sem índice clusferizado (clustered) é refeúda como heap. Quando vocêtem um heap, os encadeamentos de páginas não sáo armazenados em ordem clas-sificada. o sQL server aloca pâginas e armazena dados à medida que estes sãogravados na tabela. Os índices não clusterizados (nonclustered) são construídossobre os dados armazenados, com o nível folha dos índices contendo um ponteiropara o local da linha nas páginas de dados da tabela.

se o sQL server precisa mover a linha por causa de modificações subsequentes,como em uma divisão de páryina ou se a linha não cabe mais napágina dè dados,ele não atualiza o índice não clusterizado com a nova localizalaõ da linha. Emvez disso, o sQL server cria um ponteiro de encaminhamento na pâginade dados,apontando para o novo local da linha.

Embora a presença de certo número de ponteiros de encaminhamento para umatabela geralmente não seja uma preocupação, um grande número deles pode cau-sar séria degradaçã,o no desempenho. se náo existisse um ponteiro de encaminha-mento, o sQL server percorceria o índice não clusterizado e, então, precisaria efe-tuar somente mais uma operação pan recuperar dados da linha. contudo, se umponteiro de encaminhamento é encontrado, o sel server precisa executar maisuma operação paîa reunir dados da linha encaminhada e, enÍã.o,voltar pan con-tinuar lendo o encadeamento de páginas. Nos casos graves, você poderia observaro SQL Server exigindo de 10 a rSvezes mais operações de leitura do que o númerode linhas retornadas pela consulta.

A sintaxe geralpara criar um índice relacionalé a seguinte:

CREATE I UruTQU¡ ] [ CLUSTERED I NONCLUSTERED ]0N <objeto> ( coluna t ASC I DESC I [,...nI INCLUDE ( nome_coìuna [ ,...n ] ) lI I^IHERE <predicado_filtro> ]I h/ITH ( <opção_índice_relacional> | ,...n ] )t Ott I nome_esquema_partìçåo ( nome_coluna ) I

padrão l lI FILESIREAM_ON { none_grupo_de_arquìvos_fjle_

part'ição | "NULL" Ì lt ; l

NOTA Dados FILESTREAM

A cláusula FILESTREAM-ON é usada quando índices clusterizados (clustered) são criados emuma tabela contendo dados F/LESIREAM.Sevocê especificar na cláusula FILESTREAM_ON umgrupo de arquivos diferente de onde os dados FTLESTREAM estão atualmente localizados, to-dos os dados FILESTREAM serão movidos para o grupo de arquivos recentemente especificadodurante a criação do índice clusterizado.

INDEX

l)nome_í ndì ce

lnome_grupo_de_arqui vos I

stream I nome_esquema_

Page 132: Livro_SQL

Você deve se lembrar de que os scripts de criação de tabela que utilizamos no Capítulo 3

tinham a palavra-chave clustered na especificação de uma chave primâria. Embora umachave primária seja uma constraint, fisicamente, o SQL Server implementa uma chaveprimâria como um índice. Como a opçáo paûáo paraûma chave primária é, agrupada, anão ser que você especifique o contrârio, o SQL Server cria um Índice clusterizado (clus-tered) para uma chave primária. Do mesmo modo, uma constraint exclusiva é implemen-tada fisicamente com um índice exclusivo. Como uma chave primária também é exclusivapor padrão, a não ser que seja especificada como não agrupada, fisicamente, o SQL Serverimplementa cada chave primá,ña como um índice clusterizado exclusivo.

Conforme já discutimos no Capítulo 3, a c7âusula ON especifica o grupo de arquivos emque o índice é, criado. Contudo, como o nível folha de um índice clusterizado é a linhade dados na tabela, atabela e o índice clusterizado sáo sempre armazenados no mesmogrupo de arquivos.

Capítulo 4 I Projetando índices do SQL Server

MAls INFoRMAçöES Esquemas de partição

Os esquemas de partição serão discutidos em detalhes no Capítulo 6, "Distribuindo e particio-nando dados".

índices não clusterizadoso outro tipo de índice relacional que você pode uiar ê, o índice nâo clusteñzado (non-clustered). Os índices náo clusterizados não impõem uma ordem de classificaçáo natabela: portanto, você pode criar vários índices náo clusterizados em uma tabela. osíndices náo clusteúzados têm as mesmas restrições de um índice clusteñzado - eles po-dem ter no máximo 900 bytes na chave de índice e no máximo 16 colunas. Além disso,uma tabela está limitada a um máximo de 1.000 índices náo clusterizados.

O nÍvel folha de um índice não clusleizado contém um ponteiro para os dados neces-sários. Se existe um índice clusteúzadonatabela, o nível folha do índice náo clusteri-zado (nonclustered) aponta pan a chave de cluster. Se não existe um îndice clusteriza-do na tabela, o nível folha do índice não clusíerizado apontapara a linha de dados natabela. De qualquer modo, quando o SQL Server percorre um índice náo clusterizadoalé o nível folha, mais uma operação é necessária paralocalizar dados dentro de umalinha da tabela.

Manutenção de índiceÀ primeira vista, você poderia pensar que deveria simplesmente criar dezenas ou cen-tenas de índices em uma tabela para salisfazer qualquer consulta possível. Um índice é

uma estrutura de B-Tree que consiste em todas as entradas databela correspondentes àchave de índice. Os valores dentro de um índice são armazenados em páginas de índicede acordo com a ordem de classificação especificadapata o índice.

Quando uma nova linha é adicionada na tabela, antes que a operaçáo possa terminar, oSQL Server precisa adicionar o valor dessa nova linha no local correto dentro do índice.Sempre que o SQL Server grayana tabela, também precisa executaruma operação degravaçãrc em todo índice afetado.

131

Page 133: Livro_SQL

L32 Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

se a página de índice de nível folha náo tiver espaço para o novo valor, o sgl servertetá de realizaÍ uma divisão de pâgina e gravaÍ metade das linhas da pâgina inteira emuma pâgina recentemente alocada. Se isso também causa um estouro áe uma pâginade índice de nível intermediário, também ocorre uma divisão de página nesse nível. sea nova linha também causa o estouro da pâgina raiz, esta é dividida em um novo nívelintermediário, criando uma nova pâgina raiz.

os índices podem melhorar o desempenho das consultas, mas cada índice criado tambémcausadegradaçâo do desempenho em todas as operações INSERT upDATE, DELETE, BULKINSERT e BCP. Portanfo, você precisa ponderar o número de índices cuidadosamenÍe paraobter as operações mais eficientes. Como rega geral, se você tiver cinco ou mais índicei emuma tabela ptoietada para operações OUIP (Online Transaction Processing), provavelmenteprecisará reavaliar o motivo pelo qual esses índices existem. As tabelas projetadas paraoperações de leitura o'ú para tipos de consultas de datawarehouse normalmente têm muitomais índices, pois as operações de gravação em um data warehouse normalmente ocorrempor meio de operações em lote controladas administrativamente, fora dos horários de pico.

índices de cobertura (covering indexes)Quando um índice é construído, cada valor da chave de índice é carcegado no índice.Na verdade, cadaíndice êuma minitabela contendo todos os valores correspondentesapenas às colunas da chave de índice. Portanto, é possível que uma consulta seja total-mente satisfeita usando os dados do índice. Um índice construído de modo que o SeLServer possa satisfazer as consultas completamente lendo apenas o índice é chamad.ode índíce de cobertura (covering indexes).

Se você puder construir índices de cobertura (covering indexes) para dados acessadosfrequentemente, poderá melhorar o tempo de resposta de consultas evitando leiturasadicionais databela subjacente. Possivelmente, você tambémpoderâ aumentar a con-corrência fazendo as consultas acessar os dados de um índice, enquanto as alteraçõesque não gravam no índice estáo sendo feitas na tabela subjacente.

o SQL Server também é, capaz de usar mais de um índice para determinada consulta. Sedois índices têm pelo menos uma coluna em comum, o sel server pode juntar os doisíndices para saúsfazer uma consulta.

Colunas incluídasClaramente, é bom ter índices em seu banco de dados e os índices de cobertura (cove-ring indexes) propiciam ainda mais valor às consultas. Contudo, você está limitado a16 colunas e 900 bytes paraa chave de índice de um índice. Essas limitações excluemefetivamente as colunas com tipos de dados grandes, que seriam úteis dentro de umíndice de cobertura (covering indexes) para que uma consulta náo precisasse extrair osdados da tabela subjacente.

Os índices podem ser criados com a cláusula opcional INCLUDE. As colunas incluídasse tornam parte do índice somente no nível folha. Os valores das colunas incluídas nãoapaÍecem nos níveis raiz ou intermediários de um índice e náo sáo considerados no limitede 900 bytes de um índice. Portanto, usando a cláusula INCLUDE, você pode construiríndices de cobertura (covering indexes) que tenham mais de 16 colunas e ooo bytes.

Page 134: Livro_SQL

Estatísticas de distribuiçãoO componente responsável por determinar se um índice deve mesmo ser usado parasatisfazer uma consulta é chamado de otimizador de consulta. O otimizador de consultadecide se vai usar um índice ou não com base nas estatísticas de distribuiçáo que sãoatmazenadas para o índice.

Quando um índice é criado, o SQL Server gera uma estrutura chamadahístograma, queatmazeîa informações sobre a distribuição relativa de valores de dados dentro de umacoluna. O grau com que os valores da coluna permitem Iocalizar pequenos conjuntos dedados é referido como seletívídade do índice. À medida que o número de valores exclusi-vos dentro de uma coluna aumenta, a seletividade de um índice aumenla. O ofimizadorde consulta escolhe os índices mais seletivos para satisfazer uma consulta, pois umíndice altamente seletivo permite que o processador de consultas elimine uma partemuito grande da tabela, de modo a acessar o volume mínimo de dados necessários parasaüsfazer a consulta. Os índices com baixa seletividade e porcentagem baixa de valo-res exclusivos não são considerados pelo otimizador de consulta, mas ainda acarrctamuma sobrecatgapara operações de gravaçáo.

índices filtradosUma chave de índice poderia ter uma distorção significativa nos valores de dados quan-do uma grande porcentagem da tabela contém valores duplicados somente dentro deuma estreita faixa do conjunto de valores global. Se fosse executada uma consulta querecuperasse dados da paríedatabela que é altamente seletiva, é provável que as con-sultas subsequentes executadas no intervalo de baixa seletividade utilizassem o mesmoíndice, mas isso éclaramenfe inadequado.

Para lralar dos casos onde existe distorção significativa nos dados, o SQL Server 2008permite criar índices filtrados. Um índice filtrado é simplesmente um índice com umacláusula WHERE. Somente as chaves de índice correspondentes à cláusula WHERE sáoadicionadas no índice, permitindo a construçáo de índices que se concentram nas partesaltamente seletivas da tabela, enquanto deixa que o SQL Server escolha outro métodopara o intervalo menos seletivo.

os índices filtrados têm as seguintes restriÇões:

r Eles devem ser índices não clusterizados (nonclustered).

r Não podem ser criados em colunas calculadas.

r As colunas náo podem sofrer conversão de tipo de dados implícita ou explícita.

Opções de índiceYârias opções podem ser especificadas durante a criaçáo de um índice. A mais impor-tante delas é FILLFACTOR. Quando uma página de índice está cheia e o SQL Serverprecisa gravar uma entrada napâgina, deve ocorrer uma divisão depâgina. O resultadoda divisão depâgina são duas páginas de índice apenas metade cheias. Se divisões depâgina ocorrerem frequentemente dentro do índice, você podeftt ter rapidamente umgrande número de páginas de índice contendo somente um conjunto de dados parcial.Da mesma maneira que os arquivos no disco, os índices se tornam fuagmenfados devi-

Capítulo 4 r Projetando Índices do SQL Server 133

Page 135: Livro_SQL

L34 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

do à divisão de pâgina. Índices altamente fragmentados exigem um grande número deoperações de leitura paralocalizar as informações solicitadas.

Para controlar a velocidade com que as divisões de página ocorrem, você pode especi-ficar FILLFACTOR para o índice. FILLFACTOR especifica a porcentagem de espaço livreque deve ser deixada no nível folha de um índice durante a criação ou a reconstrução.Deixando espaço no nível folha, você pode gravar um pequeno número de linhas emuma página de nível folha antes que uma divisão de página seja necessária, diminuindocom isso a velocidade de fragmentação de um índice.

FILLFACTOR se aplica somente ao nível folha do índice. As páginas de nível inter-mediário (se aplicável) e a pâgina raiz sáo preenchidas quase completamente. O SgLServer reserva apenas espaço suficiente napâgina (ou páginas) de nível intermediárioe na página niz para aproximadamente mais uma linha a ser adicionada. Contudo,sevocê Íorintroduzirgrandes números de páginas de nível folha, o que por suavezcausarâ divisões de página no nível (ou níveis) intermediário e possivelmente na pá-gina raiz, então pode usar a opção PAD_INDEX. A opção PAD_INDEX faz com queFILLFACTOR seja aplicado na pâgina (ou páginas) de nível inrermediário e na pâginaniz de um índice.

Durante a criaçâo de um índice, todos os valores de dados da chave de índice sáo lidos.Depois de lidos esses valores, o SQL Server cria uma série de tabelas de job intern as paraclassificar os valores, antes de construir a estrutura de B-Tree. Por padrão, as tabelas dejob são criadas no mesmo banco de dados que o índice. Se não quiser consumir espaçono banco de dados onde o îndiceé criado, você pode especificar a opção SORT_IN_TEM-PDB, que faz as labelas de job de operações de classificação serem geradas no banco dedados tempdb.

Tanto índices clusterizados (clustered) como não agrupados (nonclustered) podem serdesignados como exclusivos. Depois que um índice é especificado como tal, você náopode colocar entradas duplicadas dentro dele. Se você tentar inserir valores duplicados,receberâ um erro e a transação seút rejeitada. Por padrâo, inserções de várias linhasonde mesmo uma linha produz uma duplicata, têm a transação inteira revertida. Sequiser permitir que as linhas a serem inseridas náo produzam valores duplicados e re-jeitar somente as linhas que causam duplicatas em uma operação de inserçáo de váriaslinhas, você pode especificar a opção IGNORE_DUP_KEY Com a opção IGNORE DUpKEY ativada, as linhas que produzem valores duplicados geram uma mensagem deaviso e somente essas linhas são rejeitadas.

Criação de índice onlineQuando um índice é construído, todos os valores da chave de índice precisam ser lidos e

utilizados para a construção do índice. O processo de leitura de todos os valores e da cons-trução do índice náo ocorre instantaneamente. Assim, é possível que os dados mudemdentro da chave de índice. o SQL Server controla as alterações de dados em uma tabelapara gat.antir a consistência dos dados durante a construção do índice, de acordo com aopçáo de criação especificada. Os índices podem ser criados online ou offline. Quando umindice é criado com a opção WIm ONLINE : oFF, o SQL Server bloqueia atabela inteira,impedindo quaisquer alterações aÍé, que o índice seja criado. Quando um índice ê, uiado

Page 136: Livro_SQL

com a opção ONLINE : ON, o SQL Server permite alterações na tabela durante a criaçãodo índice, usando o aÍmazenamento de versão dentro do banco de dados tempdb.

Você controla a criação de um índice usando a opçáo WITH ONLINE : oN I oFF. O pa-drãto é ONLINE : OFF. Quando você constrói um índice clusterizado (clustered) offline,atabela é bloqueada e não permite instruções de seleçáo ou modificações de dados. Se

você constrói um índice não clusterizado (nonclustered; offline, é necessário um blo-queio de tabela compartilhado, o qual permite instruções de seleção, mas não permitemodificação de dados.

Durante a uiaçáo de um índice online , a tabela ou view subjacente pode ser acessadopor consultas e por instruções de modificação de dados. Quando um índice é criadoonline, a funcionalidade de controle de versáo de linha dentro do SQL Server 2005 é

ulilizada pan galanfir que o índice possa ser construído sem entrar em conflito comoutras operações na tabela. A criação de índice online está disponível somente no SQLServer 2008 Enterprise.

Capítulo 4 r Projetando índices do SQL Server

@ o,.o DE ExAME

As operaçöes online, como a criação/reconstrução de índice online ou a restauração online,estão disponíveis somente no SQL Server 2008 Enterprise.

índices XML

Um tipo de dados XML pode conter até,2 gigabtttes (GB) de dados em uma única coluna.Embora os dados XML tenham uma estrutura que pode ser consultada, o SQL Serverprecisa percorrer a estrutura de dados paralocalizar dados dentro de um documentoXML. Para melhorar o desempenho de consultas em dados XML, você pode criar um tipode índice especial, chamado índtce XML.

Existem dois tipos diferentes de índices XML: primário e secundário.

Um Índice XML primário é construído em relação a todos os nós dentro da coluna XML.O índice XML primário também éligado àtabela, mantendo-se um vínculo para a linhacorrespondente no índice cluslerizado. Portanto, um índice clusterizado é exigido antesque você possa criar um índice XML primário.

Depois de criado um índice XML primário, você pode criar índices secundários adicio-nais. Os índices secundários podem ser criados com PATH, VALUE ou PROPERW Pri-meiro é necessário um índice XML primário, pois os índices XML secundários são cons-truídos em relação aos dados contidos no índice XML primário.

Os índices XML secundários criados com FOR PATI{ são construídos sobre os valoresPATH e NODE do índice XML primário. Um índice XML PATH é usado para otimizarconsultas que procuram um caminho dentro de um documento XML. Os índices criadoscom FOR VALUE são construídos em relação a PATH e VALUE do índice XML primárioe sáo usados para procurar valores dentro de documentos XML. Os índices que usamFOR PROPERW sã,o criados com a chave primâria, o nó e o caminho. Os índices XML depropriedade são usados pan refornar dados eficientemente de uma coluna XML, juntocom colunas adicionais databela.

135

Page 137: Livro_SQL

136 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

A sintaxe genéricapara üiar um índice XML é:

CREATE I PR]MARY I XML INDEX nome_índice0N <objeto> ( nome_coluna_xml )I USING XML INDEX nome_índice_xml

t FoR { VALUE I PArH I PRoPERTY } I lI hIITH ( <opçäo_índice_xml> [,...n ] ) l[ ; ]

índices espac¡a¡s

Os índices espaciais sáo criados em uma coluna espacial cujo tipo égeométrtco ougeo-gnírtco.

CREATE SPATIAL INDEX nome_índice0N <object> ( nome_coluna_espacial )

{l USINC <mosaìcos_grade_geometria> lÌ¡IITH ( <caixa_se1 eção>

[ [,] <parâmetros_mosaicos> [ ,,,,n ] l[ [,] <opção_índ'ice_espacìal> [,...n ] I )

I I USfruC <mosaicos_grade_geográfico> ]I WITH ( [ <parâmetros_mosaicos> [,...n ] l

[ [,] <opçäo_índice_espacìa1> [,...n ] I ) l] t 0N { nome_grupo_de_arquivos | "default" } l;

Os dados espaciais são definidos usando-se um sistema de coordenadas bidimensional.Os índices são construídos usando-se B-Trees, as quais sáo estruturas lineares. Portan-lo, para indexar dados espaciais, o SQL Server precisa transformar o espaço bidimen-sional dos dados espaciais em um encadeamento linear. O processo de decomposiçáo é

rcalizado por meio de uma operação conhecida como írlJñ.tsão de mosaicos.

Se você estiver indexando um tipo de dados geogrâficos (geography), o SeL Server ma-peia os dados da elipsoide em um espaço bidimensional não euclidiano. Primeiramente,a superficie da elipsoide é dividida em hemisférios. Entáo, cada hemisfério é projetadoem uma pirâmide quadrilateral. Em seguida, cada pirâmide é nivelada em um planobidimensional. Entáo, os planos que representam os hemisférios superior e inferior são,entáo, juntados na borda. O processo final de indexação de dados geogrâficos (geogra-phy) é aplicar infusão de mosaicos.

Antes da infusáo de mosaicos, o SQL Server constrói uma decomposição hierârquicauniforme de quatro níveis do espaço representado. O Nível 1 é o nível superior da hie-rarquia. O Nível 2 decompõe cada célula da grade do Nível 1 em uma grade de dimensãoigual. O Nível 3 decompõe cada cê7ula da grade do Nível 2 emuma grade de dimensãoigual. Do mesmo modo, o Nível 4 decompõe cada célula do Nível 3 em uma grade dedimensáo igual, como mostrado naFigwa 4-3.

A grade em cada nível da hierarquia é numerada usando-se a curva de preenchimentode espaços de Hilbert.

Infusão de mosaicosDepois de construída a hierarquia de grades de quatro níveis, cada linha de dados es-paciais é lida e representada na grade. Começando no nível 1, o processo de infusão de

Page 138: Livro_SQL

Capítulo 4 r Projetando índices do SQL Server

Figura 4-3 Uma hierarquia uniforme de grades de quatro níveis.

mosaicos coloca o objeto espacial no conjunto de células da grade que o objeto toca.Entáo, o conjunto de células tocadas ê gravado no índice.

Objetos muito pequenos tocam apenas um pequeno número de células dentro da hie-rarquia de grades, enquanto objetos grandes podem tocar um número muito grande de

células. Para limitar o tamanho do índice sem perder a precisão, a infusáo de mosaicosaplica um conjunto de regras para determinar a saída final que é gravada no índice:

r Cobertura Se um objeto cobre uma célula completamente, a cé7lúa não participado processo de infusáo de mosaicos.

I Céfulas-por-objeto Essa regra impõe o parâmetro CELLS_PER_OBJECT para o

índice espacial dos níveis 2, 3 e 4 da hierarquia de grades.

r Célula mais profunda Grava somente as células de nível mais baixo que partici-param do processo de infusão de mosaicos

Se uma céluia náo participa do processo de infusáo de mosaicos, nenhuma informaçãoé gravada para os níveis subsequentes da hierarquia de grades que corresponde a essa

célula. Desde que a regra células-por-objeto não tenha sido excedida e o objeto náocubra uma célula completamente, a célula participa do processo de infusáo de mosaicos.

Quando uma célula participa do processo de infusão de mosaicos, aparte do objeto con-tida dentro dela é representada na grade no próximo nível da hierarquia, onde as regrasde infusão de mosaicos são aplicadas no conjunto de células da grade.

A infusão de mosaicos continua por cada célula da grade e, então, em cada nível sub-sequente da hierarquia de grades. Depois que o processo atinge o limite de células-por-objeto ou o nível 4 dahierarquia, a infusão de mosaicos termina. As células queparticiparam do processo de infusáo de mosaicos no nível mais baixo definem a chavedo índice espacial da linha.

Caixa de seleçãoAo indexar dados de geometria (geometry), você precisa definir mais uma opção para umíndice espacial: a caixa de seleção. Uma B-Tree é uma estrutura linear finita que tem início e

137

Page 139: Livro_SQL

138 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

fim claramente definidos. Como um plano geométrico é infinito, você não pode definir umaB-Tree em relação a todo espaço bidimensional possível. O parâmetro BOUNDING_BOXdefine as coordenadas )ÇJ máLximas e mínimas que são consideradas na construçáo da hie,rarquia de grades e na infusão de mosaicos das linhas de dados de geometria (geometry).

Quaisquer objetos ou partes de um objeto que caiamfora da caixa de seleção não sãoconsiderados nem contados para o índice. Quando escolhe os limites da caixa de se-leção, você precisa selecionar valores que abranjam a maioria dos objetos que desejaindexar denrro da tabela.

MAIS TNFORMAçöES

Para obter mais informaçöes sobre índices espaciais e o processo de infusão de mosaicos,consulte o artigo do SQL Server Books Online "spatial lndexing Overview", no endereço http://tech n et. m i crosoft.co m/e n - u s/l i b ra ry/b b96q7 1 2.ospx.

f teste rápido

1. Qual é a diferença entre um índice clusterizado (clustered) e um não agrupado(nonclustered)?

2. Como a opçáo FILLFACTOR afeta a maneira como um índice é construído?

Respostas

1. Um índice clusterizado impõe uma ordem de classificaçáo nas páginas de dadosdatabeTa. Um índice não clusterizado não impõe uma ordem de classificaçáo.

2. Ãopçáo FILLFACTOR reserva espaço nos níveis intermediários e folha do índice.

PRÁTCA criando índices

Neste exercício você vai criar índices parc o banco de dados AdventureWorþs.

1. Execute o código a seguir paracriar um índice não clusterizado (nonclustered) natabela Person.Address:

CREATE NoNCLUSTERED INDEX idx_city 0N Person.Address(City) INCLUDE(AddressLì ne1)

2. Execute o código a seguir para criar um índice filtrado na tabela Person.Address:

CREATE NoNCLUSTERED INDEX'idx_c'ity2 ON Person.Address(City)INCLUDE (AddressLinel, Addressline2)WHERE Addressline2 IS NOT NULL

3. Execute o código a seguir para uiar um índice espacial na tabela Person.Address:

CREATE SPATIAL INDEX sidx_spat'iallocationON Pe rson . Add ress (Spatì aì Locati on)US]NG GEOGRAPHY-GR]D

WITH (GRIDS = (MEDIUM, L0l¡1, MEDIUM, HIGH ),CELLS_PER_OBJECT = 64) ;

Page 140: Livro_SQL

Resumo da liçãor Os índices clusterizados especificam uma ordem de classificação parapâginas de

dados em uma tabela.

r Você pode criar alé, 1.000 índices nâo clusterizados em uma tabela.

I Os índices não clusterizados podem incluir colunas no nível folha do Índice paraabr anger mais consultas.

¡ Você pode especificar uma cláusula WHERE para um índice não clusterizado paralimitar o conjunto de dados que o índice utiliza.

r Você pode criar três tipos diferentes de índices XML PATH, VALUE e PROPERW

r Os índices espaciais podem ser definidos para tipos de dados geogrâfico (geogra-phy) ou geométrico (geometry).

¡ Se você estiver indexando um tipo de dados de geometria, o parâmetro BOUNDING_BOX é necessário para fornecer limites para o plano bidimensional.

Revisão da lição

Responda a pergunta a seguir paratestr seu conhecimento sobre aLiçáo 2. Aperguntatambém está disponível no CD do livro (em inglês) se você preferir revisâ-la em formatoeletrônico.

Capítulo 4 r Projetando índices do SQL Server

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

139

1. Você é o administrador de banco de dados de uma empresa de varejo que fornece lâ-minas e kits para espátulas. Você está projetando um banco de dados paÍa armazeïßrcaracterísticas dos produtos oferecidos. Cada produto tem uma variedade de caracterís-ticas, mas nem todos têm o mesmo conjunto de caracteústicas. Você está planejando aesvalégia de índice para o banco de dados. A consulta mais comum será a seguinte:

SELECT a.ProductName, b.ProductType, b.lr/oodSpecìes, b.ColorFROM Products a INNER JOIN ProductAttributes b 0N a.ProductlD =b. ProductIDIdHERE b.Color = "X"

Nem todos os produtos têm o atributo Color. Que estratégia de índice seria a maiseficiente?

A. Um índice não clusterizado (nonclustered) em Color

B. Um índice não clusterizado emColor que inclua as colunas ProductTJ/pe eWoo-dspecies

c.

D.

Um índice náo clusterizado filtrado em Color

Um índice náo clusterizado filtrado em Color que inclua as colunas Product-

Wpe e WoodSpecíes

Page 141: Livro_SQL

l40

Lição 3: Mantendo índices

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

com o passar do tempo, as alterações nos dados farã,o com que os índices se tornemfragmentados. Para garaîtit as operações de consulta mais eficientes possível, você pre-cisa certificar-se de que a fragmentação seja minimizada. Nesta liçáo, você vai aprendera controlar aLaxa de fragmentaçáo etambéma eliminar afragmenfaçáo de um índice.

Após esta lição, você será capaz de:I Reconstruir índices para eliminar a fragmentação

I Desativar um índice

Tempo estimado para a lição:30 minutos

Gerenciamento e manutenção de índicesComo os dados dentro de um índice sáo armazenados em ordem classificada, com opassar do tempo os valores podem deslocar-se dentro do índice devido às divisões depâgina ou às alterações nos valores. Para gerenciar afragmentação de um índice com opassar do tempo, você precisa realizar uma manutençáo periódica.

Fragmentação de índiceEm um sistema operacional, os arquivos podem se tornar fragmentados com o passardo tempo devido a repetidas operações de gravação. Embora os índices possam se tornarfragmentados, sua fragmentação é um pouco diferente da fragmentação de arquivos.

Quando um Índice é construído, todos os valores da chave de índice sáo gravados emordem classificada nas páginas dentro do Índice. Se uma linha é removida da tabela, oSQL Server precisa remover a entrada correspondente do índice. A remoçáo do valor criauma "lacuna" na pâgina de índice. o sQL server não recupera o espaço deixado porqueo custo de encontrar e reufilizar uma lacuna em um índice é proibitivo. Se um valorna tabela em que um índice está baseado muda, o SQL Server precisa mover a enlradado índice paÍa o local apropriado, o que provoca outra lacuna. euando as páginas deíndice ficam cheias e exigem uma divisão de pâgina, você obtém mais fragmentaçáo doíndice. Com o passar do tempo, uma tabela que está sofrendo grandes quantidades dealterações de dados tem os índices fragmentados.

Para controlaÍ a taxa de fragmentação de um índice, você pode usar uma opçáo de índi-ce chamada fill factor. Você também pode usar a iîstruçã,o ALTER INDEX para eliminara fragmentaçã,o.

FILLFACTOR

A opção FILLFACTOR para um Índice determina a porcentagem de espaço livre reserva-da em cada pâgina de nível folha do índice quando um índice é criado ou reconstruído.O espaço livre reservado deixa espaço na pâgina para mais valores serem adicionados,teduzindo assim a velocidade com que as divisões de pâgina ocorrem. FILLFACTOR é

Page 142: Livro_SQL

representado como uma porcentagem de preenchimento. Por exemplo, um fill factor de

75 signiftca que 250/o do espaço em cada pâgina de nível folha foram esvaziados paraacomodar futuros valores.

Desfragmentando um índiceComo o SQL Server náo recupera espaço, você deve recuperar periodicamente o espaçovazio em um índice para preservar as vantagens de desempenho de um índice. Você

desfragmenta um índice usando ainstruçâo ALTER INDEX, como mostrado aqui:

ALTER TNDEX { nome_índice I ALL }0N <objeto>{ REBUILD

[ [ t^fITH ( <opção_índice_reconstruçäo> [, ...n ] ) l| | PARTITION = número_partição

I I^IITH ( <opção_índice_reconstrução_partìção_sìmp1es>

Capítulo 4 I Projetando índices do SQL Server

[ ,...n ] )l I lI DTSABLE I REoRCANTZE

I PARTITI0N = número-partiçäo ]I IIIIITH ( L0B_C0MPACT]ON = { oN I OFF } )

I SET ( <opção_índìce_definida> [,...n ] ) ]tQuando desfragmenta um índice, você pode usar as opções REBUILD ou REORGANIZE.

A opção REBUILD reconstrói todos os níveis do índice e deixa todas as páginas cheias,de acordo com a configuraçáo de FILLFACTOR de um índice. Se você reconstruir o

índice clusteúzado (clustered), somente ele será reconstruído. Contudo, reconstruir oíndice clusterizado com a palavra-chave ALL também reconstrói todos os índices nãoclusterizados (nonclustered) na tabela. A reconstruçáo de um índice cria efetivamentea estrutura de B-Tree inteira; portanto, a náo sü que você especifique a opção ONLI-NE, um bloqueio de tabela compartilhado será obtido, impedindo quaisquer alteraçõesaré que a operação de reconstruçáo termine.

A opção REORGANIZE remove a ftagmentação somente no nível folha. ,\s páginas de

nível intermediârio e a pâgina raiz não são desfragmentadas durante uma reorganiza-

ção. REORGANIZE é sempre uma operação online que náo acarÍeta nenhum bloqueiode longo pÍazo.

Desativando um índiceUm índice pode ser desativado com a instrução ALTER INDEX, como segue :

ALTER INDEX { nome_Índjce I ALL }0N <objeto>DISABLE [ ; ]

Quando um índice é desativado, a definiçáo permanece rlo calâlogo de sistema, mas nãoé mais utilizada. O SQL Server não mantém o índice como dados nas alterações de tabe-la e o índice não pode ser usado paru satisfazer consultas. Se um índice clusterizado é,

desativado, a tabela inteira se torna inacessível.

t4t

l;l

Page 143: Livro_SQL

t42 Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2009

Para se ativar um índice, ele deve ser reconstruído parara de B-Tree. Você pode fazer isso usando o comando a

ALTER INDEX { nome_índice I ALL }0N <objeto>REBUILD [ ; ]

t'teste rápido1. Qual é a diferença entre as opções REBUILD e REoRGANIZE deALTER INDEX?2. O que acontece quando um índice é desativado?

Respostas

1. REBUILD desfragmenta todos os níveis de um índice. REORGANIZE desfrag-menta somente o nível folha do índice.

2. um índice que é desativado não é mais utilizado pelo otimizador. Além disso,quando os dados mudam na tabela, qualquer índice desativado não é mantido.

PRÁncn Mantendo índices

restaurar e preencher a estrutu-seguir:

Neste exercício, você vai desfragmentar, desativar e reativar índices.

1. Execute a consulta a seguir para reconstruir todos os índices natabela person.Address:

ALTER INDEX ALL0N Person.AddressREBUILD

2. Execute a consulta a seguir para reotganizat um índice na tabela person.person:

ALTER INDEX IX_Person_LastName_Fi rstName MiddleName0N Person. PersonREORCANIZE

3. Execute a consulta a seguir para desativar o índice clusterizado (clustered) natabe-la Person.Address:

ALTER INDEX PK_Address_AddressfD0N Person.AddressDISABLE

4. Execute a consulta a seguir paraverificar se a tabela Person.Address não está aces-sível:

SELECT * FROM Person.Address

5. Execute a consulta a seguir paru ativar novamente o índice clusterizado na tabelaPerson.Address:

ALTER INDEX PK_Address_AddressID0N Person.AddressREBUTLD

Page 144: Livro_SQL

6. Execute a consulta a seguir para verificar se agora você pode acessar ar.abelaPer-son.Address:

SELECT * FROM Person.Address

Resumo da lição

r Você pode desfragmentar índices usando as opções REBUILD ou REORGANIZE.

r A opção REBUILD desfragmenta todos os níveis de um índice. A náo ser que aopçáo ONLINE seja especificada, REBUILD adquire um bloqueio detabela compar-tilhado e impede todas as modificações de dados.

r A opção REORGANIZE só desfragmenta o nível folha de um índice e não causabloqueio.

r Você pode desativar um índice para excluilo de consideração por parte do otimiza-dor ou de qualquer manutençáo de índice devido a alterações de dados. Se o índiceclusterizado é desativado atabeTa inteira se torna inacessível.

Revisão da liçãoResponda a pergunta a seguir parateslar seu conhecimento sobre aLição 3. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

Capítulo 4 r Projetando índices do SQL Server

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

l43

1. Você é o responsável pela construção do processo qlJe carcega aproximadamente150 GB de dados no dala warehouse empresarial a cada mês. Toda tabela em seudata warehouse tem pelo menos oito índices para suportar rotinas de análise dedados. Você quer canegar os dados diretamente nas tabelas o mais rapidamentepossível. Qual operação oferece o melhor desempenho com o mínimo trabalho ad-ministrativo?

A. Usar um comando BULK INSERT.

B. Eliminar e recriar os índices.

C. Desativar e ativar os índices.

D. Usar Integration Services para importar os dados.

Page 145: Livro_SQL

Revisão do capítulo

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Para reforçar o que aprendeu neste capítulo, você pode:

I Ler o resumo do capítulo.

r Examinar a lista de termos-chave introduzidos neste capítulo.

I Completar o cenário de caso. Esse cenário aborda situações reais que envolvem os

tópicos deste capítulo e solicita que você crie uma soluçáo.

r Completar as práticas sugeridas.

1 Fazer um teste.

Resumo do capítulor Você pode criar um único índice clusterizado (clustered) em uma tabela, o qual im-

põe uma ordem de classificaçáo nas páginas de Índice.

r Você pode criar até 1.OOO índices não clusterizados (nonclustered) em uma tabela.

Os índices náo clusterizados podem ser filtrados e podem incluir colunas adicionais

no nível folha do índice.

r Um índice espacial é construído pelo mapeamento dos objetos espaciais em umagrade uniforme de quatro níveis e pela aplicaçáo de regras de infusáo de mosaicos.

r Você pode desfragmentar índices usando a opçáo REBUILD ou REORGANIZE da

insfiuçãoALTER INDEX.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando o

glossário no final do livro.

r B-Tree Estrutura linear e simétrica usada para construir um índice. Uma B-Tree

fornece uma estrututa compacta que permite pesquisar volumes de dados muitograndes com um pequeno número de operações de leitura.

r índice clusterizado (clustered) Índice que impõe uma ordem de classificaçáo nas

páginas dentro do índice. Uma tabela só pode ter um índice clustetizado.

r índice de cobertura (covering index) Índice que permite salisfazer uma consul-

ta usando somente as entradas dentro do índice.

r índice não clusterizado (nonctustered) Índice que náo impõe uma ordem de

classificaçáo nas páginas de dados dentro databela. Você pode ter até 1.000 índices

não clusterizados em uma tabela.

r lnfusão de mosaicos Processo utilizado para construir um índice espacial. A in-

fusão de mosaicos conta as células em que um objeto espacial toca dentro da hie-

rarquia de grades de quatro níveis.

Page 146: Livro_SQL

Cenário de caso

No cenário de caso a seguir, você vai aplicar o que aprendeu neste capítulo. As respostasdessas questões podem ser encontradas na seção "Respostas", no final deste livro.

Cenário de caso: Executando tarefas de gerenciamento de dadosA Wide World Importers está implementando um novo conjunto de aplicativos paragerenciar vârias íneas de sua empresa. Dentro do centro de dados corporativo, ela pre-cisa da capacidade de armazenar grandes volumes de dados que podem ser acessados apartir de qualquer lugar do mundo.

Vários gerentes empresariais precisam acessar relatórios operacionais que abordam acarga de trabalho atual de seus funcionários, junto com pedidos novos e pendentesdos clientes. Os mesmos gerentes empresariais precisam acessar grandes volumes dedados históricos para identificar tendências e otimizar seus níveis de provimento depessoal e estoque.

Os gerentes empresariais querem eliminar todos os manuais incluídos com seus produ-tos e, em vez disso, encaminhar os usuários para o site da empresa. Os usuários devemseÍ capazes de examinar os manuais com base no produto ou procurar texto dentro deum manual. A equipe de vendas também gostaria de melhorar o site da empresa, permi-tindo que descrições de produto sejam criadas e pesquisadas em vários idiomas.

Uma grande equipe de vendas fazligações para clientes do mundo todo e precisa aces-sar dados sobre os clientes que um representante de vendas está atendendo, junto comprováveis compradores em potencial.

os dados para a equipe de vendas precisam estar disponíveis mesmo quando os ven-dedores não estão conectados na Internet ou na rede corporativa. Periodicamente, osrepresentantes de vendas se conectam na rede corporativa e sincronizam seus dadoscom os bancos de dados corporativos.

Algumas das principais tabelas dentro do banco de dados estáo listada s na Tabela 4-t .

Capítulo 4 r Projetando indices do SQL Server 145

Tabela 4-1 Tabelas do banco de dados da Wide World lmporters

Customer

customerAddress contém um ou mais endereços para cada cliente. um endereçopode ter até três linhas, além da cidade, estado/distrito, códigopostal, país e a latitude/longitude do endereço. Uma linha deendereço, cidade e país é exigida.

CustomerContact Contém uma ou mais linhas por cliente para armazenarinformaçöes de contato, como número do telefone, telefone celulaIendereço de e-mail e número do fax.

Contém o nome de um cliente, junto com sua linha de crédito,número da conta, login no site e senha.

(contìnuo)

Page 147: Livro_SQL

L46 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Tabefa 4-1 Tabelas do banco de dados da Wide World lmporlers (continuoçõo)

SalesPerson

Product

CustomerOrder

CustomerOrderDetail Contém os itens de linha de cada pedido feito.

Contém uma lista dos funcionários designados para vendas, juntocom a região atribuída a cada um, taxa de comissão e cota de vendas.

CustomerSalesPerson Vincula cada cliente a um vendedor.

Uma variedade de aplicativos Microsoft Windows foi criada com o Microsoft VisualStudio.NET e todo acesso a dados é feiro usando-se procedimentos armazenados(stored procedures). O mesmo conjunto de aplicativos é implantado para os usuáriosque se conectam diretamente no servidor do banco de dados corporativo, assim comopara os representantes de vendas que se conectam em seus próprios servidores de

banco de dados locais.

Algumas das consultas comuns são:

I Procurar clientes por nome, cidade ou vendedor

I Procurar os clientes que pediram um produto específico

r Procurar todos os pedidos que ainda não foram enviados

r Encontrar o endereço de envio de um cliente

¡ Encontrar todos os produtos que foram pedidos em determinado mês

I Encontrar todos os clientes dentro de determinada distância do local atual de umvendedor

o que você deve fazer para garanlir operações de consulta eficientes no banco de dados?

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

Criando índices

r Exercício 1 Adicione chaves primárias em todas as tabelas em seu banco de da-dos que não tenham nenhuma.

r Exercício 2 Encontre todas as tabelas em seu banco de dados que não tenhamum índice clusterizado (clustered) e crie um índice clusteñzado ou mude a chaveprimâria para ser agrupada.

Contém ProductlD, SKU, estoque existente, quantidade de estoquemínima, custo do produto e preço básico.

Contém os pedidos feitos por um cliente, junto com o vendedorque registrou o pedido, data do pedido, um indicador informandose o pedido foi enviado e o total geral do pedido.

Page 148: Livro_SQL

T Exercício 3 Crie índices de cobertura (covering indexes) para consultas executa-das frequentemente que atualmente náo estejam sendo totalmente satisfeitas porum índice.

Exercício 4 Altere para índice flltrado um índice que seja utilizado para satisfazerconsultas que estejam acessando somente um subconjunto de linhas para um índi-ce frltrado, a fim de promover operações mais eficientes.

I

Faça um testeOs testes do CD deste livro (em inglês) oferecem muitas opções. Você pode fazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-ficação 70-432. É possível configurar o teste para que ele simule a experiência de lazerum exame de certificaçáo ou configurá-lo no modo de esiudo (study mode) para ver asrespostas corretas e explicações depois de cada questão.

Capítulo 4 r Projetando índices do SQL Server

MAIS TNFORMAçÕES Testes

Para mais detalhes sobre todas as opções de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

147

Page 149: Livro_SQL
Page 150: Livro_SQL

Capítulo 5

[ndexação

Objetivos de exame neste capítulo:

I Instalar o SQL Server 2008 e serviços relacionados.

I Configurar componentes adicionais do SeL Server.

r Configurar indexaçáo full text.

I Manter índices.

liçöes deste capítulo:

r Lição 1: Criando e preenchendo índices full text títr Liçáo 2: Consultando dados full text 15s

r Lição 3: Gerenciando índices full text 165

Antes de começarParafazer as lições deste capítulo, você deve ter:

I o exemplo de banco de dadosAdventureWorþ,s instalado

@ "unao real

Míchael Hoteþ

uma das empresas em que trabalhei vendia diversos produtos complexos. cadaproduto vinha com um ou mais manuais e alguns dos manuais podiam ter mi-lhares de páginas, abrangendo vários volumes. para economizar custos de papel e

tinta, em 2002, a empresa eliminou todos os manuais impressos.

os manuais eram produzidos com o Microsoft office word e então transforma-dos em PDF para serem carregados no site da empresa. Entã,o, os clientes podiamvisitar o site da empresa para acessar o manual relevante. Embora os clientes es-tivessem satisfeitos com o índice de termos no final de cada manual, depois queos manuais foram carregados no site da empresa, eles esperavam ser capazes depesquisálos para localizar a informaçáo necessária.

Page 151: Livro_SQL

1s0 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Para resolver o problema, a empresa contratou uma firma de consultoria paraconstruir para os manuais um índice que pudesse ser pesquisado. Depois de pas-sar dois meses desenvolvendo uma prova de conceito que indexou 15 manuais aum custo de mais de US$40.000, a empresa se deparou com uma estimativa deprojeto de mais de US$S milhões para indexar todos os manuais existentes, juntocom um custo estimado de US$ 1 milhão por ano para manter o código e indexarnovos manuais ou alterar os jâ existentes. O projeto foi trazido para nossa consi-deração em uma reuniáo de orçamento mais ampla.

Sem fazer grande alarde, construímos um banco de dados simples que tirava pro-veito dos recursos de FILESTREAM do Microsoft SQL Server 2008. Durante o fimde semana, carregamos todos os mais de 20.000 documentos do Word em uma co-lunaWlRBIN,4RY designadaparaFILESTREAM, usando os recursos da API Win32.Então, criamos e preenchemos um índice full textpata todos os documentos. Ocarregamento de documentos e a criação do índice full text exigiram aproximada-mente 52horas para terminar. Também pedimos para um de nossos desenvolvedo-res de ASP criar um modelo de pâgina úpido que nos permitisse enviar pesquisaspor meio de um navegador.

Na segunda-feira de manhã, solicitamos uma reunião com a equipe que estava tra-balhando no projeto de indexaçáo de documentos e apresentamos nossa solução.A gerência não só ficou impressionada pelo fato de termos conseguido indexartodos os manuais em um flnal de semana, como também não conseguia acreditarcomo nossa qualidade de pesquisa era significativamente melhor do que a soluçáoanterior, como atualizava aûtomaticamente quaisquer alterações e estava pronlapara entrar em produçáo imediatamente. Cerca de duas horas após a reunião,tínhamos o recurso de pesquisa de manuais ativo no site da empresa, com umaeconomia de custo de mais de US$B milhões, sem mencionar os US$1 milháo porano em taxas de manutençáo que o fornecedor estava propondo.

Page 152: Livro_SQL

Lição 1: Criando e preenchendo índices full textO SQL Server 2008 permite construir índices que proporcionam a capacidade de con-sultar rapidamente grandes volumes de dados não estruturados. Nesta lição, você vaiaprender a criar catâlogos fulI text e índices full text.

Após esta lição, você será capaz de:I Criar um catálogo full text

I Criar um índice full text

I Configurar o modo de preenchimento de um índice full text

I Gerenciar o preenchimento de índice full text

Tempo estimado para a lição:20 minutos

Catálogos full text

Capítulo 5 r lndexação Full Text 151

O primeiro passo na construçáo de um índice full text é criar uma estruturu de armaze-namento. Ao contrário dos índices relacionais, os Índices full text têm uma estrutura in-terna única que é mantida dentro de um formato de armazenamento diferente, chamadocatálogo.¡frill text. Cada catâlogo full text contêm um ou mais índíces¡fu.ll text.

A sintaxe genéica para criar um catálogo full text é:

CREATE FULLTEXT CATALOG nome_catá.logo[0N FILECROUP grupo de arquivos fIIN PATH' caninhoraiz'l[VrlITH <opção_catál ogo>fIAS DEFAULT]

IAUTH0RIZATTON none_p rop ri etári o f<opção_catál ogo>: ::

ACCENT_SENSTTTVTTY = {0N loFF}

'@ o'to DE E*AME

Antes do SQL Server 2008, você associava o catálogo full text a um grupo de arquivos so-mente para propósitos de backup, com o conteúdo inteiro do catálogo mantido em umaestrutura de diretório no sistema operacional. No SQL Server 2008, a Microsoft eliminou aestrutura de arquivos externa e agora o conteúdo de um catálogo full text é armazenadodentro do banco de dados.

A cláusula FILEGROUP especifica o grupo de arquivos que você deseja :usar paÍa arma-zenar os índices full text criados dentro do catálogo full text. A cláusula IN PATH foidesaprovada e náo deve mais ser utilizada, pois agora os índices full text sáo armaze-nados dentro do banco de dados.

ACCENT_SENSITIVIIY permite definir se o mecanismo full text considera acentos aoconstruir ou consultar um índice full text. Se você alíerar a opçáo ACCENT_SENSIITVIW,precisarâ reconstruir todos os índices full text dentro do catálogo.

Page 153: Livro_SQL

L52 Kit de Treinamento MCTS (Exame70-432): Microsoft SeL Server 200g

A cláusula AS DEFAUUT funciona da mesma forma que a opção DEFAULI para umgrupo de arquivos. Se você não especificar um nome de catâIogo ao criar um índice fulltext, o SQL Server criarâ o índice dentro do catâlogo que estiver marcado como catálogofull text padr-ao.

A opçáo AUTHORIZ,\TION especifica o proprietârio do catâlogo full iexr. o proprietárioespecificado deve ter permissáo TAKE OWNERSHIP no catálogo full text.

NOTA Localização de grupo de arquivos

Embora seja possível armazenar um catálogo full text em um grupo de arquivos que tam-bém contenha dados relacionais, recomenda-se criar um grupo de arquivos diferente paraíndices full text, para separar a l/O (entrada e saída) no catálogo full text da entrada/saídados dados relacionais.

índices full textDepois de criar o caíâlogo full text, você pode criar os índices full text que sáo a base dapesquisa de dados não estruturados.

Você pode criar índices full text em colunas de tipos de dados CHAR/VARCHAR, XML eV, RBINARY. se você criar um índice full text em uma coluna 1ILAR/ZARCHAR, o me-canismo full text poderâ analisar os dados diretamente e construir um índice apropria-do. os índices full text construídos em colunas XIIL carÍegam um processador èspãcialque pode entender e analisar um documento xML (Extensible Markup Language), demodo que você está indexando o conteúdo do documento XML e náo as marcas XMLdentro do documento.

O uso mais comum de uma coluna VARBLNARY(MAX) é, no armazenamento de documen-tos usando os novos recursos de FILESTREAM do SQL Server 2008. Embora o mecanismofull text possa construir um índice diretamente nos documentos criados, evitando assimos dispendiosos processos de conversã0, o mecanismo precisa empregar assemblies es-pecializadas, projetadas para os vários tipos de documenlos que você queira armazenaï.Quando você process aÍ uma coluna VARBLNARY(MAX) , também precisarâespecifîcar umacoluna que indique o tipo de documento para que o analisador full text possa carregar amontagem apropriada. O SOL Server 2008 tem 50 filtros que permitem o processamentode uma variedade de tipos de documento, como HTML (Hypertext Markup Language),Word, Microsoft Office Powerpoint e Microsoft Office Excel.

Para construir índices, o mecanismo de indexaçáo full text usa serviços auxiliares, comodecompositores de palavn e ídentlficadores de raíz de palavra específicos do idioma.A primeira tarefa na construção de um índice eficienfe para dados não estruturados écompor uma lista de palavras dentro dos dados que estáo sendo indexados. Decompo-sítores de palavra sáo assemblies que localizam quebras entre palavras para construiruma lista das palavras a serem indexadas. Como os verbos podem ter múltiplas formas,como passado, presente e futuro, os identificadores de raiz de palawa conjugam osverbos para que suas consultas possam localizat informações mesmo em vários temposverbais. Os idiomas são usados para especificar o decompositor de palavra e o identi-

Page 154: Livro_SQL

ficador de raiz de palavra em particular a serem aplicados na coluna, pois os idiomasconjugam verbos e até decompõem as palavras de formas diferentes.

A lista de palavras é filtrada através de uma lista de palavras comuns, chamadas de pa-lavras de parada. Você especifica palavras de parada de modo que seu índice não fiquepoluído com grandes volumes de palavras que normalmente não seriam pesquisadas.Por exemplo, the, a e an sáo consideradas palavras de parada paÍa o idioma inglês, en-quanto le e la sâo palavras de parada para o idioma francês.

Você pode criar índices fulI text sobre várias colunas; entretanto, você só pode criar umíndice full text em uma tabela ou view indexada. A sintaxe genérica para criar um índicefulltext é:

CREATE FULLTEXT INDEX 0N nome_tabela| ( { nome_coTuna

I TYPE COLUMN nome_coluna._tipo fI LANCUACE termo_idioma I

1 t ,...n])l

KEY INDEX nomc_índice[ 0N <opçáo_grupo_de_arquívos_catálogo> fI h/ITH [ ( ] <opção_com> [ ,...n] t ) I l

l;l

Capítulo 5 r lndexação Full Text

<opção_g r u po_de_a rqui vo s_catál ogo> i i ={none_catál ogo_ful 7 text

( nome_catáIogo_fuI1 text, FILEGROUP nome_grupo_de_arquivos )( FILEGROUP nome_grupo_de_arquivos, nome_catá|ogo_fu17 text )( FILEGROUP nome_grupo_de_arquivos )I

<opção_com>::={CHANCE_TRACKTNG | = I { MANUAL I AUTo | oFF L N0 popULATroN I }I STOPLIST t = I { OFF I SYSTEM I nome_lista_paradal}

1s3

O parâmetro TYPE COLUMN indica a coluna que contém o tipo de filtro que o mecanismode índice full text deve utiTizar ao processar uma coluna VARBINARY(M,4X). Você usa oparãmetro LANGUAGE pan especificar o idioma dos dados que estáo sendo indexados.O parâmetro KEY INDEX é a coluna dentro da tabeTa ou view indexada que identificauma linha exclusivamente.

Controle de alteração

A opçáo CFIANGE_TRACKING para um índice full text determina como o SQL Servermantém o índice quando os dados subjacentes mudam.

Quando você especifica MANUAL ou AUTO, o SQL Server mantém uma lista de alte-rações feitas nos dados indexados. Quando MANUAL está configurado, você fica res-ponsável por propagar periodicamente as alterações no índice fuIl text. Quando AUTOestá configurado, o SQL Server atualiza o índice full text automaticamente, quando osdados sáo modifrcados. Ao conlrârio de um índice relacional, o preenchimento de umíndice full text náo é um processo imediato, pois os dados precisam ser enviados pan o

Page 155: Livro_SQL

mecanismo de indexação, o qual aplica então os decompositores de palavra, identifica-dores de raiz de paTavra, arquivos de idioma e listas de panda, antes de consolidar asalterações no índice.

Quando CHANGE_TRACKING está configurado como OFE o SQL Server não mantémuma lista de alterações feitas nos dados subjacentes. Portanto, se quiser afualizar oíndice para refletir os dados que estão correntemente na coluna indexada, você precisapreencher o índice completamente de novo. Com CHANGE TRÄCKING desativado, vocêtambém pode especifrcar a opçáo NO POPULATION, a qual permite criar o índice full textsem preencher durante a criaçã,o inicial.

ldioma, decompositores de palavra eidentificadores de raiz de palavra

A especificação do idioma é um componente fundamental na construção de um índicefull text eficiente. Embora fosse possívelutilizar simplesmente um único decompositordepalavra para todos os dados, quando os dados abrangem vários idiomas, você podeter resultados inesperados. Por exemplo, o idioma inglês quebra as palavras com umespaço, enquanto idiomas como o alemão e o francês podem combinar palavras. Se umdecompositor de palavra reconhecesse como quebras entre palavras somente o espaçoem branco, o índice full text só atenderia suas necessidades se todos os dados atmaze-nados estivessem em inglês.

A especificação do idioma éutilizada para controlar o decompositor de palavra e o iden-tificador de raiz de palavra específicos carregados pelo mecanismo de indexaçáo fulltext. O decompositor de palawa e o identificador de níz de palavra selecionados serãoos mesmos para o índice full text inteiro e não poderáo mudar dinamicamente, com baseem uma coluna de tipo, como você pode fazer em uma coluna VARBINARY. Contudo,você não precisa dividir dados de coluna com base em cada idioma específico. Embora aspalavras possam diferir, você pode agrupar muitos idiomas em um pequeno conjunto defamílias de idioma genéricas e cada decompositor de palavra terâ a capacidade de mani-pular as palavras que abrangem um grupo rcduzido de idiomas.

Por exemplo, você poderia armazenar dados que abrangem vários idiomas da EuropaOcidental, como inglês, alemão, francês e espanhol. Você poderia usar um único idio-ma para indexar a coluna que quebrasse apropriadamente as palavras para o índice.Quando você tem dados que abrangem vários idiomas, deve especificar uma confi-guraçáo para o idioma mais complicado. Por exemplo, o decompositor de palavrasalemás também pode quebrar corretamente palavras em inglês, espanhol e francês,enquanto o decompositor de palavras inglesas teria problemas com alguns elementosdo idioma alemáo.

Quando os idiomas variam muito, como ârabe, chinês, inglês e islandês, você deve di-vidir os dados em colunas separadas com base no idioma. Caso conïário, não poderáquebrar todas as palavras corretamente e não construirá um índice full text que se com-porte conforme o esperado.

O SQL Server 2008 tem 50 decompositores de palavralidentificadores de raiz de palavrapara idiomas específicos. Também é incluído suporte para você registrar e usar decom-

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Page 156: Livro_SQL

positores de palavra e identificadores de raiz de palavra de outros fornecedores dentrodo SQL Server. Por exemplo, para turco, dinamarquês e polonês são usados decomposi-tores de palawa de outros fornecedores que vêm com o SQL Server 2008.

Os decompositores de palawalocalizam e sinalizam limites de palavra dentro do texto.Então, o índice full text agrega cada sinal para construir estatísticas de distribuiçáo panpesquisa. Além disso, os decompositores de palavra reconhecem proximidade dentro doconjunto de dados e a incorporam nas estatísticas fu1l text. A capacidade de pesquisarcom base na proximidade de palavras é uma caracferíslica exclusiva dos índices full textque possibilita a existência de critêrios de busca compostos que consideram como aspalavras se relacionam umas com as outras.

O SQL Server usa identificadores de raiz de palawa para permitir que um índice fuIl textpesquise todas as formas flexionais de um termo pesquisado, como ímpelír; ímpelíu,ímpelído eímpelíndo. A identiflcação deraiz de palavra é específica do idioma. Emboravocê pudesse empregar um decompositor de palavras alemãs paru colocar sinais no in-glês, o identificador de raiz de palavras alemãs não pode processar inglês.

Capítulo 5 r lndexação Full Text 155

t't"rt" rápido

1. Antes que você possa criar um índice full text, que estrutura precisa criar?

2. o que você precisa especificar para criar um índice full text em documentosarmazenados dentro de FILESTREAM?

Respostas

1. Os índices full text sáo contidos em catálogos fuIl text. Portanto, você precisacriar um catéLlogo full text antes de criar um índice full text.

2. O SQL ServeÍ aÍmazeîaos documentos dentro de uma colunaWlRBfNARY(tufAX)com a propriedade FILESTRE,AM ativada. Para críar um índice full text, vocêtambém precisa especificar uma coluna de tipo que identifique o tipo de do-cumento qrc eslâ armazenado na coluna VARBLNARY(M,4X), pan caff egar ofrltro apropriado pan uso do decompositor de palavra.

PRÁTrcA Criando índices full textNos exercícios a seguir, você vai criar um calâlogo full text, junto com um índice fulltext.

Neste exercício, você vaicriar um catálogo ful1text.

1. Execute o código a seguir para adicionar um grupo de arquivos e um arquivo nobanco de dadosAdventureWorþs para uso na indexação full text:

ALTER DATABASE Adventu rel¡ÍorksADD FILEGROUP AWFullTextFG

GO

Page 157: Livro_SQL

156 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

ALÏER DATABASE AdventureworKs

ADD FILE (NAME = N'S Adventurel¡lorksFT', FILENAME =N'C:\Program Files\Microsoft SQL Server\MSSQL1O . MSSQLSERVER\MSSQL\DATA\Adven t u rehlo r ks FT. n df ' )

T0 FILECROUP Al¡rfFul lTextFGco

2. Execute o código a seguir para üiar o caráLlogo full text de AdventureWorÍes:

USE AdventurelrlorksGO

CREATE FULLTEXT CATALOG PToductsFTC0N FILECROUP AÌ¡rlFul lTextFG

c0

Neste exercício, você vai criar um índice full text.

1. Execute o código a seguir pancriar um índice full text paraa descrição de pro-duto:

CREATE FULLTEXT INDEX 0N Production. ProductDescrìpt'ion(Descriptìon)KEY INDEX PK_ProductDescr-i pti on_ProductDescrì pt'ionID0N ProductsFTCI^IITH CHANGE_TRACKING = AUTO

GO

2. Expanda o nó Storage, Full Text Catalogs sob o banco de dados Adventureworþs, cli-que com o botão direito do mouse no catáLlogo ProductsFTc e selecione Properties.

Selecione a página Tables/Views para examinar o índice fuIl text que você acaboude criar.

3.

4. Examine os índices full text dentro de AW2OOSFullTextCatalog que acompanha obanco de dados Adven tureWorþs.

Resumo da lição

r Antes de criar um índice full text, você precisa criar um catâlogo full text que sejamapeado em um grupo de arquivos para conter um ou mais índices full text.

r Você pode criar um índice fulI text em colunas CHAR/VARCHAR, XML eVARßINARY.

I Se você criar um índice full text em uma coluna VARBTNARY(MAX), deve especificara coluna para o parâmetro COLUMN IYPE, para que o mecanismo full text carregueo filtro de análise apropriado.

r A configuração de LANGUAGE controla o decompositor de palavra e o identificadorde raiz de palavra que o SQL Server canega para sinalizar e construir formas fle-xionais para o índice.

Page 158: Livro_SQL

r Embora um decompositor de palavra possa ser usado em diferentes idiomas es-treitamente relacionados com resultados aceitáveis, os identificadores de raiz depalawa sáo específicos do idioma selecionado.

r A opção CHANGE_TR\CKING controla se o SQL Server acompanha as alteraçõesfeitas nas colunas subjacentes, assim como se as alterações sáo preenchidas auto-maticamente no índice.

Revisão da lição

Responda as perguntas a seguir parateslar seu conhecimento sobre aLiçâo 1. As per-guntas também estáo disponíveis no CD do livro (em inglês) se você preferir revisálasem formato eletrônico.

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" nofinal do livro.

Capítulo 5 r lndexação Full Text 157

1. Você é o administrador de banco de dados de sua empresa. Você precisa permitir quea equipe de apoio às vendas realize pesquisas vagas (îuzzy lookups) em descrições deproduto. Quais ações você precisa executar parasalisfazer as necessidades do usuáriocom o mínimo trabalho? (Escolha duas. Cada uma forma parte da resposta corceta.)

A. Criar um catálogo full text especificando o grupo de arquivos para propósitosde backup e o caminho rcizpara aÍmazenaÍ o conteúdo do catálogo no sistemade arquivos.

B. Criar um catálogo full text e especificar o grupo de arquivos para armazenaÍ oconteúdo do catálogo.

C. Criar um índice full text para a coluna de descrição nafabela de descrições deproduto e especificar NO POPULATION.

D. Criar um índice full text para a coluna de descrição na tabela de descrições deproduto e especificar CFIANGE_TRACKING AUTO.

2. Yocê quer configurar seus índices full text de modo que o SQL Server migre as al-terações feitas no índice o mais rapidamente possível, com o mínimo trabalho doadministrador. Que comando você deve execrttar?

A. AUTER FULUTEXT INDEX ON <nome_tabela> START FULL POPULATION

B. ALIER FULU|EXT INDEX ON <nome Iabe\a> START INCREMENTAL POPULA-TION

C. ATTER FULUTEXT INDEX ON <nome_Iabela> SET CHANGE_TRACKING AUTO

D. ALTER FULTJTEXT INDEX ON <nome tabela> START UPDATE POPULATION

Page 159: Livro_SQL

158

Lição 2: Consultando dados full text

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

O SQL Server fornece dois comandos para consultar dados full text: C2NTAINS e FREE-TEXT Existem mais dois comandos que produzem um conjunto de resultados com colu-nas de informaçáo adicionais : C )NTAIN S TABLE e FRE E TEXTTABLE.

A principal diferença entre os quatro comandos é que CONTAINS e FREETEXT retornamum valor True/False, usado para restringir um conjunto de resultados, e CONTzAINSTA-

BLE e FREETEXTTAßLE retornam um conjunto de resultados que pode ser usado paraampliar a funcionalidade da consulta.

Quando você inclui um predicado full text em uma consulta, o SQL Server envia o termode pesquisa fulI text para o mecanismo de indexaçáo full text para aplicar um decom-positor de palavra que sinaliza o argumento da pesquisa. Com base na sinalização dotermo da pesquisa, estatÍsticas de distribuiçáo são retornadas para o ofimizador, o qualentáo mescla a parle do texto completo da consulta com a parte relacional para cons-truir um plano de consulta.

Após esta lição, você será capaz de:

I Consultar dados não estruturados por meio de um índice full text

Tempo estimado para a lição: 20 minutos

FREETEXT

As consultas FREEIEXT sáo a forma mais básica de pesquisa full text. A sintaxe gené-rica de uma consultaFREETEXT é:

FREETEXT ( { none_coluna | (7ista_coluna) | * }, 'string_FREETEXf' [ , LANGUACE termo_idioma f )

Um exemplo de consukafn"gZTZXf é,

SELECT ProductDescrìptionID, DescrìptionFROM Producti on. ProductDescri pti onhIHERE FREETEXT(Descri ption, N' bi ke' )GO

O parâmetro LANGUAGE permite especificar o decompositor de palavra e o identiflca-dor de raiz de palavra empregados para avaliar o argumento de pesquisa de entrada.Embora você pudesse ter usado o idioma alemão para construir o índice full text, podeespecificar um parâmetro de idioma inglês para empregar um decompositor de palawaespecífico do inglês para a consulta.

NOTA Parâmetros de idioma

Embora você possa empregar em uma consulta um idioma diferente daquele utilizado paraconstruir um índice, não melhorará automaticamente a precisão de uma pesquisa full text.Como os identificadores de raiz de palavra são específicos do ídioma, se o índice foi construido com um idioma diferente daquele especificado na consulta, você não poderá encontrar asformas flexionais de palavras com sua consulta.

Page 160: Livro_SQL

.@ o'to DE E*AME

Todos os termos de pesquisa usados full text são strings Unicode. Se você passar uma stringque não seja Unicode, a consulta ainda funcionará, mas será muito menos eficiente, pois o oti-mizador não poderá utilizar detecção de parâmetro para avaliar as estatísticas de distribuiçãono índice full text. Certifique-se de que todos os termos passados para uma pesquisa full textsejam sempre digitados como Unicode para obter o máximo desempenho.

FREETEXTTAtsLE retorna um conjunto de resultados com informações adicionais queclassificam os resultados de acordo com o quanto eles corresponderam ao termo de pes-quisa original. A sintaxe genérica de FREETEXTIABLE é:

FREETEXTTABLE (tabela, { nome_coluna | (lista_coluna) | * }, 'strinq_FREETEXT'

[ ,LANCUAGE termo_idiona )l,n_superiores_por_cIassifi cação I )

A mesma consulta expressa com FREETEXTMBLE é como segue:

SELECT a.ProductDescrìptionID, a.Descrìpt'ion, b.*FROM Production. ProductDescription a

INNER J0IN FREETEXTTABLE (Producti on . ProductDesc ri ptì on ,Description,N'bike') b 0N a.ProductDescriptìonID = b. [Key]

ORDER BY b. [Rank]60

CONTA'NS

Para consultas que exigem maior flexibilidade, você usaria o predicado CONTAINS, quepermite:

r Pesquisar formas de palavra

r Procurar proximidade de palavra

I Fornecer ponderaçáo relaliva aos termos

A sintaxe genérica de CONTAINS é

CONTAINS( { nome_coluna | (lista_coluna) I n }

, '< condição_pesquisa_contén >'| , LANGUACE terno_idiona f )

Capítulo 5 r lndexação Full Text 159

< condiÇão_pesquisa_contém > :i=<termo_simples> I << termo_proximidade t | < terno_ponderado{ ( < condi çã.o_pesqui sa._contém > ){ < AND > | < AND NoT > | < 0R > } lcondição_pesquise_contém > I ...n f ]

terno_sinples >

pal avraterno prefixo >

{ "PaTavra *

::=t""l

termo_prefixo >

frase "

" frase *" j

| < termo_geração>Ì

Page 161: Livro_SQL

160 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

< termo_geração > ::=FORMSOF ( { INFLECTIONAL I THESAURUS }, < termo_sinples > 1,...n I )

< termo_proximidade >

{ < terno-simpTes{{NEARI-}{ < termo_simples

< termo_ponderado > =:=ISAB0UT ( { { < termo_simples >

geração >

| < termo_proximidade > jI I^IEICHT ( valor_peso ) I

Os termos de pesquisa podem ser usados para correspondências exatas ou como pre-fixos. A consulta a seguir retorna os produtos com uma correspondência exata napalavra bíke. Embora a consulta pareça quase exatamente a mesma da versão deFREETEXT, a consulta CONTAINS retorna duas linhas a menos, devido à correspon-dência exata, como segue:

SELECT ProductDescriptjonlD, DescrìptìonFROM Producti on . ProductDesc ri pti onI^IHERE CONTAINS(Descrj pti on, N'bi ke')c0

Se quiser fazer uma pesquisa de curinga bâsica para palavras prefixadas por um termode pesquisa, você pode executar a seguinte consulta:

SELECT ProductDescrìptionID, Descrìpt"ionFROM Production. ProductDescri ptionWHERE CONTAINS(Description,N"'bi ke*"' )c0

Se você comparar os resultados anteriores com a consulta FREETEXT, verâ que cadaum deles retorna o mesmo conjunto de linhas. Com CONT,4INS, você precisa especificarexplicitamente que deseja rcalizar uma pesquisavaga, aquaTinclui prefixos de palavra,mas FREETEXT tem a pesquisavaga (fuzzy search) como padráo.

Nos casos em que você deseja pesquisar variantes de palavras, pode usar as opçõesFORMSOR INFLECTIONAL e THESAURUS. INFLECTIONAL faz o mecanismo full textconsiderar raizes de palawa. Por exemplo, pesquisar ímpelído tambêm pesquisa ímpe,Itr ímpelíndo, ímpeltu, etc. THESAURUS produz sinônimos do termo de pesquisa. Umexemplo de pesquisa de variantes de palavra é o seguinte:

SELECT ProductDescrìpt'ionID, DescriptionFROM Production. ProductDescri ptionÌIì/HERE CONTAINS(DescriptionnN' FORMSOF (INFLECTIONAL, rjde)')GO

SELECT ProductDescriptìonID, Descrìpt'ionFR0M Producti on. ProductDescrì pt'i onWHERE CONTAINS(Description,N' FORMS0F (THESAURUS,metal)')co

::=>l<termo_prefixo>j

>l<termo_prefixo>\

Ì [ ,...n ] )

| < terno_prefixo t I < terno_

Ì I ...n l

Page 162: Livro_SQL

NOTA Arquivos de dicionário de sinônimos

Existe um arquivo de dicionário de sinônimos para cada idioma suportado. Todos os arquivosde dicionário de sinônimos são arquivos XML armazenados no diretório FTDATA, sob o ca-minho de instalação padrão do SQL Server. Os arquivos de dicionário de sinônimos não sãopreenchidos; portanto, para f azer pesquisa de sinônimo você precisa preencher os arquivos dedicionário de sinônimos. Você vai aprender sobre arquivos de dicionário de sinônimos na Lição3, "Gerenciando índices full text".

Como os índices full text sáo construídos com dados não estruturados, o índice armaze-na a proximidade de uma palavra com outra, além de indexar as palavras encontradasdentro dos dados. A pesquisa de proximidade é feita usando-se a paTavra-chave NE,4R.Embora você possa realizar pesquisas de proximidade e de proximidade ponderadausando CONTAINS, esses tipos de pesquisas geralmente sáo feitas com CONTTIINSTA-

BLE para uliTizar o valor de R 4NK que é calculado.

A consulta a seguir rctorna todas as linhas onde bíþe eslâ próxima de pey¡furmance. O

valor da classificação é afetado pela distância entre as duas palavras:

SELECT a.ProductDescriptionlD, a.Descrìption, b.*FROM Production.ProductDescription a INNER IOIN

CONTAINSTABLE(Production. ProductDescrìption, Descrì ption,N'bike NEAR performance') b 0N a.ProductDescrìptionfD = b.[Key]

ORDER BY b. [Rank]c0

A consulta a seguir retorna as 10 linhas superiores da classificação, de acordo com asmédias ponderadas das palavras petfonnance, conlfortable, smooth, sgfe e competítíon:

SELECT a.ProductDescriptionlD, a.Descrìption, b.*FROM Production.ProductDescriptìon a INNER JOIN

CONTAINSTABLE ( Product'i on . ProductDesc rì pti on, Desc ri ptì on,N'ISABOUT (performance I¡IEIGHT (.8), comfortable VíEIGHT (.6),smooth ì^ÍEIGHT (.2) , safe l¡/EfGHT (.5), competition hIEIGHT (.5))', 10)b 0N a.ProductDescriptìonID = b.[Key]

ORDER BY b. [Rank] DESC

GO

Capítulo 5 r lndexação Full Text 161

t't"rt" rápido

1. Que predicado faz pesquisa vaga (fuzzy search) porpadrão?

2. Que predicado é usado parcfazer pesquisas de proximidade e de sinônimo?

Respostas

1. Os predicados FREEIEXT e FREETEXTTABLE fazem pesquisas de curinga porpadráo.

2. CONT, INS e CONTAINST, ,BLE sáo usados para pesquisas de proximidade, dedicionário de sinônimos e flexionais.

Page 163: Livro_SQL

L62

PRÁTtcA Consultando com um índice full text

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Neste exercício, você vai executar várias consultas para comparar os resultados de

CONTA]NS, CONTA]NSTABLE, FREETEXT C FREE TEXTTABLE.

1. Execute a consulta a seguir e examine o conteúdo da coluna Description:

SELECT DescrìptionFR0M Producti on. ProductDescri ptì on

c0

2. Execuíe a consulta a seguir e examine as linhas retornadas:

SELECT ProductDescrìptìonID, DescrìptionFROM Productj on. ProductDescrj ptionhIHERE FREETEXT(Descri ptìon, N' bi ke' )GO

3. Execute a consulta a seguir e examine as linhas retornadas:

SELECT a.ProductDescriptionlD, a.Descrìption, b.*FROM Productjon. ProductDescription a

INNER lOIN FREETEXTTABLE(Production. ProductDescri ptìon,Descriptìon,N'bike') b 0N a.ProductDescriptjonlD = b. [Key]

ORDER BY b. [Rank]c0

4. Execute a consulta a seguir e examine as linhas retornadas:

SELECT ProductDescriptìonID, DescriptionFROM Producti on. ProductDescri ptì on

I^IHERE CONTAINS(Description,N' bj ke')GO

5. Execute a consulta a seguir e examine as linhas retornadas:

SELECT ProductDescriptionlD, DescrìptìonFROM Production. ProductDescri pti on

k'/HERE CONTAINS(Descri ption,N I rrbi ke*rr r)

GO

6. Execute a consulta a seguir e examine as linhas retornadas:

SELECT ProductDescriptionlD, DescriptionFR0M Producti on. ProductDescri pti on

t^fHERE CONTAINS(Description,N' FORMSOF (INFLECTIONAL, ride)')GO

7. Execute a consulta a seguir e observe que nenhuma linha é retornada, pois vocêainda não preencheu um arquivo de dicionário de sinônimos:

SELECT ProductDescriptionlD, DescrìptìonFROM Producti on. ProductDescri ptionWHERE CONTAINS(Description,N' FORMSOF (THESAURUS,metal)')GO

Page 164: Livro_SQL

8. Execute a consulla a seguir e examine as linhas retornadas:

SELECT a.ProductDescriptionlD, a.Description, b.*FROM Production.ProductDescription a INNER JOIN

CONTAINSTABLE(Production. ProductDescr.i ptj on, Descrì pt'i on,N'bike NEAR performance') b 0N a.ProductDescrìptìonID = b. [Key]

ORDER BY b. lRank]GO

9. Execute a consulta a seguir e examine as linhas retornadas:

SELECT a.ProductDescrìptjonID, a.Descriptìon, b.*FR0M Productjon.ProductDescrjption a INNER l0IN

CONTAINSTABLE(Productìon. ProductDescriptjon, Descriptìon,N'TSABOUT (performance ITIEIGHT (.8), comfortable WEIGHT (.6),smooth l¡lElGHT (.2) , safe I¡ÍEIGHT (.5) , competjtion \¡ìIEICHT

(.5)) "

1_0)

b 0N a.ProductDescrìptionID = b.[Key]ORDER BY b. lRank] DESC

c0

Capítulo 5 r lndexação Full Text 163

Resumo da lição

I Os predicados FREETEXT e CONAINS retornam um valor True ou False, o qualvocê pode enlãLo utilizar em uma consulta semelhante a uma cláusula EXISTS pararestringir um conjunto de resultados.

r Os predicados FREETEXTTABLE e CONTAINSTABLE retornam um conjunto de resul-tados que inclui uma coluna de classificação indicando com que proximidade umalinha correspondeu ao termo de pesquisa.

a FREETEXT e FREETEXTT,4BLE fazem pesquisa de curingapor padráo.

. CONTAINS e CONTAINSTABLE podem fazer pesquisas de curinga, junto com pesqui-sas de proximidade, forma depalawa e sinônimos.

Revisão da lição

Responda as perguntas a seguir paraíestaÍ seu conhecimento sobre aLição 2. As per-guntas também estão disponíveis no CD do livro (em inglês) se você preferir revisá-lasem formato eletrônico.

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" nofinal do livro.

Page 165: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

t. Você quer procurar dois termos com base na proximidade dentro de uma linha.Quais predicados full text podem ser usados pan fazer pesquisas de proximidade?(Escolha duas. Cada uma forma uma resposta separada.)

A. CONTAINS

B. FREETEXT

C. CONTAINST,ABLE

D. FREETEXTTABLE

Você quer fazer:uma pesquisa de proximidade com base em um valor de ponderaçáopara os argumentos da pesquisa. Quais opções do predicado CONTAINSTABLE você,

deve usar?

A. FORIvISOF com a palavra-chave HESAURUS

B. FOR"IISOF com a palavra-chave INFLECTIONAL

C. TS.ABOUT

D. IS, BOUT com a palavra-chave WEIGHT

2.

Page 166: Livro_SQL

Lição 3: Gerenciando índices full textEmbora seja possível tirar proveito significativo apenas com a criação e o preenchimentoautomático de um índice full text, você pode aumentar a utilidade do índice criando ar-quivos de dicionário de sinônimos e construindo listas de parada para filrurar o índice.Nesta lição, você vai aprender a criar e usar um arquivo de dicionário de sinônimos e aconstruir uma lista de parada e reconstruir um índice full text.

Após esta lição, você será capaz de:

I Manter arquivos de dicionário de sinônimos

I Criar e gerenciar listas de parada

I Gerenciar o preenchimento de índices full text

Tempo estimado para a lição: 15 minutos

Dicionário de sinônimos

Capítulo 5 I lndexação Full Text

Você usa um arquívo de dtctonórío de sínônimos para permitir que as consultas full textrecuperem linhas que correspondam ao argumento de pesquisa, junto com sinônimosde um argumento de pesquisa. Um dicionário de sinônimos é um arquivo XML especifico para um idioma que ê armazenado no diretório FTDATA. Depois que você o define,o SQL Server usa automaticamente o dicionário de sinônimos específico do idioma paraconsultas de FREETEXT e FREETEXTT,4BLE. O dicionário de sinônimos é utilizado ape-nas para consultas de CONTAINS e CONTAINSABLE quando você especifica a opçãoFORMSOF THESAURUS.

Um dicionário de sinônimos pode conter conjuntos de expansão ou conjuntos de substitui-çáo. O conjunto de substituição define um ou mais termos que são substituídos dentro doargumento de pesquisa, antes que o decompositor de palavra sinalize a lista de argumen-tos. O conjunto de expansão define um grupo de termos que são usados para expandir umargumento de pesquisa. Quando um conjunto de expansão éutilizado, uma correspondên-cia de qualquer termo dentro desse conjunfo faz o SQL Server recuperar a linha.

A estrutura bâsîca de um arquivo de dicionário de sinônimos é:

<XML ID="Mjcrosoft Search Thesaurus"><!-- Commented out

<thesaurus xmlns="x-schema:tsSchema.xml "><di acri ti cs_sensi ti ve>O</di acri ti cs_sensi ti ve>

<expansì on><sub>f nte rnet Expl ore r</ sub><sub>IE<,/sub><sub>IE5<,/sub>

</expans'i on>< repl acement>

<pat>NT5<,/pat><pat>Vr/2K<,/pat><sub>Vr/i ndows 2000<,/sub>

</repl acement>

165

Page 167: Livro_SQL

166 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

<expansi on><sub>run</sub><sub>j og</sub>

</expansi on></thesau rus>

</xML>

A configuração diacritics especifica se o dicionário de sinônimos diferencia acentos.

Listas de parada

Ls lístas de parada, conhecidas nas versões anteriores do SQL Server como arquivos de

palavras de ruído, sáo usadas para excluir palavras que você não quer incluir em umíndice full text. Você exclui de um índice as palavras que ocorrem comumente, para que

os resultados válidos visados possam ser retornados nas pesquisas formadas de maneira

corceta. Embora talvezvocê queira procurar "Microsoft" na Internet inteira, se sua pes-

quisa estiver sendo executadana documentação de um produto da Microsoft, não apenas

provavelmente retornaria todo documento de produto existente dentro do conjunto inde-

xado, como o projetista do sistema consideraria esse pedido de pesquisa inválido.

As palavras de parada comuns de cada idioma, como the, a e a,n para o inglês, )â são

consideradas pelo mecanismo de indexaçáo full text. Além das palavras comuns, umadministrador pode adicionar outras específicas para sua empresa que sejam provâ-

veis de aparecü frequentemente dentro dos dados que deseja indexar. Quando umapaTavra de parada é incluída como argumento de pesquisa ou é encontrada dentro dos

dados que estáo sendo indexados, o decompositor de palavra classifica o termo como

sem interesse e o elimina. Se todos os argumentos que você enviou dentro de umpredicado full text são palavras de parada, a consulta não retorna resultados e nem

mesmo acessa os dados.

@ DICA DE EXAME

Embora muitos recursos do SQL Server funcionem de forma igual de uma versão para a se-

guinte, outros são aprimorados ou alterados. Você pode supor que terá perguntas em um

exame destinadas a testar se sabe a mudança no comportamento para a nova versão. No

SQL Server 2005 e em versões anteriores, você configurava arquivos de palavra de ruído que

estavam no diretório FTDATA. No SQL Server 2008, você configura listas de parada que estão

contidas dentro de um banco de dados no SQL Server. É muito provável que, se houver umapergunta sobre a configuração de palavras de parada, as respostas disponíveis incluam os

comportamentos do SQL Server 2005 e do SQL Server 2008, sendo que qualquer um dos com-portamentos do SQL Server 2005 serão respostas incorretas.

Preenchendo índices full textOs índices full texts podem ser preenchidos manualmente (a pedido ou segundo umaprogramaçâo) ou automaticamente, quando os dados sob o índice mudam. Você tambémpode parar, fazer uma pausa ou retomar o preenchimento de um índice para conlrolar autiTizaçáo de recursos ao fazer grandes volumes de alterações em um índice full text.

Page 168: Livro_SQL

As opções de preenchimento de um Índice full text são:

r FULL Processa novamente cada linha dos dados subjacentes para reconstruir to-talmente o índice full text

r INCREMENTAL Processa apenas as linhas que foram alteradas desde o últimopreenchimento; exige uma coluna de indicação de hora na tabela

r UPDATE Processa todas as alterações, desde a última vez em que o índice foiatualizado; exige que a opção CHANGE_TRACKING esteja ativada para o índice econfigurada como MANUAL

Para iniciar o preenchimento de um índice full text, você executaria a instrução ALTERFULLTEXTTNDEX.

t'teste rápido

Capítulo 5 r lndexação Full Text

1.

2.

Que tipo de arquivo permite pesquisar com base em sinônimos?

O que você configura para excluir palavras de seu índice e dos argumentos depesquisa?

Respostas

1. Um arquivo de dicionário de sinônimos permite configurar sinônimos paraargumentos de pesquisa.

2. Uma lista de parada contém a lista de palavras que você deseja excluir de umíndice fulItext, assim como de argumentos de pesquisa.

PRÁTlcA Gerenciando índices full text

167

Nos exercícios a seguir, você vai preencher um arquivo de dicionário de sinônimos e

comparar os resultados da pesquisa. Você também vai construir uma lista de paradapara fillrar palavras comuns de argumentos de pesquisa e do índice full text.

Neste exercício, você vai preencher um arquivo de dicionário de sinônimos.

1. Execute a consulta a seguir e verifique se não retorna nenhuma linha:

SELECT ProductDescriptionlD, Descrìpt'ionFR0M Producti on. ProductDescri pti on

I^IHERE CONTAINS(Descrìptìon,N' FORMS0F (THESAURUS,metal)')GO

2. Abra o arquivo Tsenu.xml (inglês norte-americano),Tocalizado emArquivos de Pro-grama\Microsoft SgL Server\MSSQLl 0.MSSQLSERVER\MSSQL\FTDaIa.

Altere o conteúdo do arquivo pan o seguinte:

<XML ID="Mjcrosoft Search Thesaurus"><thesaurus xml ns="x-schema:tsSchema.xml ">

<di ac rj tj cs_sensi ti ve>O<,/di ac rj ti cs_sensi tj ve><expans'i on>

3.

Page 169: Livro_SQL

168 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

<sub>metal </sub><sub>steel </sub><sub>al umi num</sub><sub>al 1 oy</sub>

</expans.i on></thesau rus>

</xML>

4. Recarregue o arquivo de dicionário de sinônimos executando o seguinte (1035 es-

pecificou o idioma inglês norte-americano):

USE Adventurehlorksc0EXEC sys.sp_ful1text_load_thesaurus-file 1033;GO

5. Execute a consulta a seguir, verifique se agora você recebe 33 linhas de dados ecompare as linhas retornadas com o que você esperaria com base em sua entradade dicionário de sinônimos:

SELECT ProductDescriptìonID, DescriptionFROM Producti on. ProductDescrj pti on

WHERE CONTAINS(Descriptìon,N' FORMSOF (THESAURUS,metal)')GO

Neste exercício, você vai construir uma lista de parada e comparar os resultados das

consultas.

NOTA Delimitadores de comando

O ponto e vírgula é o delimitador para um comando Transact-SQL. Na maioria dos casos,

você não precisa especificar um delimitador de comando explicitamente. Contudo, algunscomandos, como CREATE FULLTEXT STOPI./S7i exigem que você especifique um delimitadorexplicitamente para que o comando seja executado com êxito.

1. Execute a consulta a seguir no banco de dados AdventureWorks e examine as 16

linhas retornadas:

SELECT ProductDescriptìonID, DescriptionFROM Production. ProductDescriptionWHERE CONTAINS(Descri ption,N"'bj ke*"')GO

2. Crie uma nova lista de parada, executando o comando a seguir:

CREATE FULLTEXT STOPLIST PToductStoplìst;c0

3. Adicione a palavra bíke nalista de parada, executando o comando a seguir:

ALTER FULLTEXT ST0PLIST ProductStoplist ADD 'b'ike' LANGUAGE l-033;co

Page 170: Livro_SQL

4. Associe a lista de parada ao índice full text na tabela ProductDescription, comose$ue:

ALTER FULLTEXT INDEX 0N Production.ProductDescrìptionSET SToPLIST ProductStoplist

GO

5. Execute a consulta a seguir no banco de dados AdventureWorþs e examine os resul-tados:

SELECT ProductDescriptìonID, DescrìptìonFR0M Producti on. ProductDescri pti onWHERE CONTAINS(Descrìption, N"'bi ke*"' )co

Resumo da lição

r Você gerencia arquivos de dicionário de sinônimos editando o arquivo do idiomaespecífico que está contido no diretório FTDATA da instância.

r VOCê usa oS comandos CREATE FULLTEXT STOPLIST eALTER FULLTEXT STOPLISTpara construir uma lista de palavras de parada a serem excluídas de argumentos depesquisa e do índice full text.

I Uma vez constuída uma lista de parada, você pode usar o comando ALTER FULL-TEXT INDEX para associá-la a um índice full text.

Revisão da lição

Responda a pergunta a seguir paraíestar seu conhecimento sobre aLiçâo 3. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisála em formatoeletrônico.

Capítulo 5 r lndexação Full Text 169

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. Você lem uma lista de palavras que devem ser excluídas de argumentos de pesqui-sa. Qual ação você deve executar no SQL Server 2008 para satisfazer seus requisi-tos com o mínimo trabalho?

A. Criar uma lista de parada e a associar ao índice full text.

B. Criar um arquivo de palavras de ruído e o associar ao índice full text.

C. Preencher um arquivo de dicionário de sinônimos e o associar ao índice fulltext.

D. Analisar a consulta de entrada e remover todas as palavras comuns dos argu-mentos de pesquisa.

Page 171: Livro_SQL

L70

Revisão do capítulo

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Para reforçar o que aprendeu neste capítulo, você pode:

I Ler o resumo do capítulo.

I Examinar a lista de termos-chave inûoduzidos neste capítuio.

I Completar o cenário de caso. Esse cenário aborda situações reais que envolvem os

tópicos deste capítulo e solicita que você crie uma solução.

r Completar as práticas sugeridas.

a FazeÍ um teste.

Resumo do capítulor Índices full text podem ser criados em colunas CH'4R/VÁRCHAR, XML eVARBINARY.

r euando você usa um índice full text em uma coluna VARBINARY, deve especificar

o filtro a ser usado pelo decompositor de palavra para interpretar o conteúdo do

documento.

I Os arquivos de dicionário de sinônimos permitem especificar uma lista de sinôni-mos ou palavras substitutas para termos de pesquisa.

r As listas de parada excluem uma lista de palavras de argumentos de pesquisa e de

um índice full text.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando o

glossário no final do livro.

. CaláLlogo full text

r Filtro full text

r Índice full text

r ldentificador de raiz de palavra

r Lista deparada

r Arquivo de dicionário de sinônimos

r Decompositor de palavra

Cenário de caso

No cenário de caso a segui¡ você vai aplicar o que aprendeu neste capítulo. As respostas

dessas questões podem ser encontradas na seção "Respostas", no final deste livro.

Page 172: Livro_SQL

Cenário de caso: lnstalando e configurando o SQL Server 2008A Wide World Importers está implementando um novo conjunto de aplicativos paragerenciar vátrias ineas de sua empresa. Dentro do centro de dados corporativo, ela pre-cisa da capacidade de armazenar grandes voiumes de dados que podem ser acessados apartir de qualquer lugar do mundo.

Vários gerentes empresariais precisam acessar relatórios operacionais que abordam acarga de trabalho atual de seus funcionários, junto com pedidos novos e pendentes dosclientes. Eles também precisam acessar grandes volumes de dados históricos para iden-tificar tendências e otimizar seus níveis de provimento de pessoal e estoque.

Os gerentes empresariais querem eliminar todos os manuais incluídos com seus produ-tos e, em vez disso, encaminhar os usuários para o site da empresa. Os usuários devemser capazes de examinar os manuais com base no produto ou procurar texto dentro deum manual. A equipe de vendas também gostaria de melhorar o site da empresa, permi-tindo que descrições de produto sejam criadas e pesquisadas em vários idiomas.

Uma grande equipe de vendas laz ligaçöes para clientes do mundo todo e precis a aces-sar dados sobre os clientes que um representante de vendas está atendendo, junto comprováveis compradores em potencial. Os dados paÍa a equipe de vendas precisam estardisponíveis mesmo quando os vendedores náo estão conectados na Internet ou na redecorporativa. Periodicamente, os representantes de vendas se conectam na rede corpora-tiva e sincronizam seus dados com os bancos de dados corporativos.

Uma variedade de aplicativos Microsoft Windows foi criada com o Microsoft Visual Studio.NET e todo acesso a dados é feito usando-se procedimeîtos aÍmazenados (stored proce-dures). O mesmo conjunto de aplicativos é implantado para os usuários que se conectamdiretamente no servidor de banco de dados corporativo, assim como para os representan-tes de vendas que se conectam com seus próprios servidores de banco de dados locais.

1. Quais recursos do SQL Server 2008 devem ser usados para armazenar os manuaisde produto?

2. O qrc você deve configurar para permitir que os usuários façam pesquisas em ummanual de produto?

3. Para fornecer os melhores resultados possíveis para as pesquisas, quais objetosdevem ser configurados?

Capítulo 5 r lndexação Full Text L7l

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

Criando um índice fulltextr Crie um índice full text com um tipo de dados de cancteÍe grande.

Page 173: Livro_SQL

172

Consultando um índice full text

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

r Realize vârias consultas usando CONAINS, CONTAINSTABLE, FREEIEXT e FREE-

TEXTTABLE nos dados que você criou para um índice full text e compare os resulta-

dos com o que espera retornar.

Criando um arqu¡vo de dicionário de sinônimos

r Preencha um arquivo de dicionário de sinônimos para fornecer palavras substitutasou sinônimos e execute mais consultas para examinar o efeito.

Criando uma l¡sta de parada

r Crie uma lista de parada para excluir palavras comuns de suas pesquisas e verifi-que o efeito quando íeîtar ulilizar as palavras excluídas.

Faça um testeOs testes do CD deste livro (em inglês) oferecem muitas opções. Você pode fazet umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-

ficaçáo 70-432. É possível configurar o teste para que ele simule a experiência de fazer

um exame de certificaçáo ou configurá-lo no modo de estudo (study mode) para ver as

respostas corretas e explicações depois de cada questão.

MA|S TNFORMAçöES Testes

Para mais detalhes sobre todas as opçöes de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

Page 174: Livro_SQL

Ca pítu lo

Distribuin

O particionamento de tabela foi introduzido no Microsoft SgL Server 2005 como ummodo de dividir tabelas grandes entre várias estruturas de atmazenamento. Anterior-mente, os objetos estavam restritos a um único grupo de arquivos que podia contervários arquivos. Contudo, o posicionamento dos dados dentro de um grupo de arquivosainda era determinado pelo SQL Server.

O particionamento de tabela permite que tabelas, índices e views indexadas sejam cria-dos em vários grupos de arquivo, ao passo que também permite ao administrador debanco de dados (DBA) especificar que parte do objeto serâ armazenada em um grupo dearquivos específico.

O processo de particionamento de uma tabela, índice ou view indexada é:

l. Criar uma função de partição.

2. Criar um esquema de partição mapeado em uma funçáo de partição.

3. Criar afabela, índice ou view indexada no esquema de partiçáo.

Objetivo de exame neste capítulo:

r Gerenciar partições de dados.

liçöes deste capítulo:

r Liçáo 1: Criando uma funçáo de partição 175

r Lição 2: Criando um esquema de parlição 1SO

r Lição 3: Criando tabelas e índices particionados 784

I Lição 4: Gerenciando partições 188

Antes de começarParafazer as iições deste capítulo, você deve ter:

r uma instância do SQL Server 2008 instalada, usando Enterprise, Developer ouEvaluation.

Page 175: Livro_SQL

L74 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

@ tunao reat

Míchael Hoteþ

Um de meus clientes estava com alguns sérios problemas de disputa em seus ser-

vidores de produção com SQL Server. Às vezes a disputa eratáo séria que os clien-

tes dele não conseguiam fazer login nos pagamentos programados, nos saldosde conta corrente nem executar quaisquer outras ações. o problema de disputafoilocalizado nas rotinas de arquivamento que eram comandadas por um planode retenção de dados SOX recentemente criado. Náo importa o que tentassem,os DBAs náo conseguiam reduzir a sobrecarga do processo de arquivamento o

suficiente para impedi-lo de afetar os clientes. As rotinas de arquivamento diáriodemoravam de3 a 4 horas para executar e os arquivamentos semanais de dados

de auditoria podiam demorar até 22 horas.

Para resolver os problemas de disputa, particionamos todas as tabelas abrangidaspelo plano de retençáo de dados SoX. Em seguida, implementamos um novo pro-

cesso, utilizando os recursos SPLIT MERGE e SWITCH do particionamento, para

mover threads de dados das tabelas OLIP para um conjunto de tabelas temporá-

rias. Não apenas o tempo necessário para concluir as rotinas de arquivamentocaiu de algumas horas para menos de 5 segundos, como também eliminamos toda

a disputa por dados nas tabelas.

Page 176: Livro_SQL

Lição 1: Criando uma função de partiçãoUma função de partição define o conjunto de pontos de fronteira nos quais os dadosserão particionados. Nesta liçáo você vai aprender a executar o primeiro passo do parti-cionamento, que é a criaçã,o de uma função de partição.

Após esta lição, você será capaz de:I Criar uma função de partição

Tempo estimado para a lição: 15 minutos

Capítulo6 r DistribuindoeParticionandoDados

Funçöes de partição

Uma função de partição define os pontos de fronteira que serão usados para dividir os

dados em um esquema de partiçáo. A Figura 6-1 mostra um exemplo de tabela particio-nadabásica.

ID

Tabela

L

c1

2

3

c2

3

5

A

c3

4

2

L75

B

c4

5

1

B

Função de part.

6

5

L

+ 3 + Grupo de arquivos 1

-

5 '+ Grupodearquivos2

+ 2 + Grupo de arquivos L

-

1 .+ Grupo de arquivos 4

+ 5 + Grupo de arquivos 2

-

5

-

Grupo de arquivos 2

+ 2+ Grupodearquivosl,7

5

Figura 6-1 Uma tabela particionada.

Um exemplo de função de partiçã,o ê

CREATE PART]T]ON FUNCT]ON

mypartfunction (i nt)AS RANGE LEFT

FoR VALUES (10,20, 30,40, 50, 60)

2

A

F

Esquema de part.

Cada função de partição exige um nome e um tipo de dados. O tipo de dados define oslimites dos pontos de fronteira que podem ser aplicados e deve abraîger um intervalode dados igual ou menor do que o do tipo de dados de uma coluna de uma tabela, índiceou view indexada no qual você deseja aplicar a função de partição.

O tipo de dados de uma função de partição pode ser qualquer tipo de dados nativo doSQL Server, exceto text, ntext, ímage, varbínary(max), timestamp, xml evarchar(max).Você também não pode usar tipos de dados Transact-SQl definidos pelo usuário nem

Page 177: Livro_SQL

t76 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

tipos de dados cLR (common Language Runtime). Tipos de dados imprecisos, como co-lunas reais e calculadas, devem ser persistidos. Todas as colunas ufilizadas na paríiçã.odevem ser deterministas.

A clâusula AS permite especificar se a funçáo de partiçáo que você está criando é RAN-GE LEFToURANGE RIGHT. Os parâmetrosLEFTeRIGHT definem qual partição incluirâum ponto de fronteira.

A cláusula FOR VALUES é usada para especificar os pontos de fronteira da função departição. Se a função de partição é criada como RANGE LEFT, o ponto de fronÍeira é

incluído na partição da esquerda. se a função de partição é criada como R 4NGE RIGHT,o ponto de fronteira é incluído na partiçáo da direita.

uma funçáo de partição sempre mapeia o intervalo de dados inteiro; portanto, nenhumalacuna está presente. Você não pode especificar pontos de fronteira duplicados. Isso ga-rante que qualquer valot armazenado em uma coluna sempre seja avaliado como umaúnicapaniçãto. Valores nulos sáo sempre armazenados na partição da esquerda, alê, quevocê especifiquenull como um ponto de honteira explicitamente e use a sintaxe RANGERIGHT no caso em que os valores nulos seráo armazenados na partição da direita.

Como o intervalo de valores inteiro é sempre mapeado para uma função de partição,o resultado é a uiaçã,o de uma partição a mais do que o número definido de pontosde fronteira. ATabela 6-1 mostra como a lunção de partiçáo a seguir é definida noSQL Server:

CREATE PART]TION FUNCTTON

mypartfunction (int)AS RANCE LEFTFoR VALUES (l_0, 20, 30,40, 50, 60)

Tabefa 6-1 Função de partição com Ronge Left

-oo

11

NOTA Reutilização de código

2T

A definição de uma função de partição não fornece uma cláusula para um objeto, coluna ouarmazenamento. lsso significa que uma função de partição é um objeto independente que, sequiseç você pode aplicar em várias tabelas, índices ou views indexadas.

31

4L

51

6l

10

20

30

40

50

60

Page 178: Livro_SQL

A Tabela 6-2 mosfra como as partições mudam quando a funçáo de partição é definidacomo RANGE RIGHT, como segue:

CREATE PART]TION FUNCTION

mypartfunction (i nt)AS RANGE R]GHTFoR VALUES (10, 20, 30,40, 50, 60)

Tabefa 6-2 Função de partição com Range Right

Capítulo 6 r Distribuindo e Particionando Dados 177

L0

Você pode ter no máximo 1.000 partições para um objeto; portanto, pode especificar nomáximo 999 pontos de fronteira.

20

,{& o,.o DE EXAME

30

40

Você pode particionar um objeto existente depois que ele estiver preenchido com dados.Para particionar uma tabela existente, você precisa eliminar o índice clusterizado (clustered) erecriá-lo no esquema de partição. Para particionar um índice ou uma view indexada existente,elimine o índice e o recrie em um esquema de partição. É preciso ter muito cuidado ao parti-cionar objetos existentes que já contêm dados, pois a implementação da partição causará umaquantidade significativa de l/O (entrada e saída) de disco.

50

60

19

29

39

49

t'r"rt" rápido

59

1. Quais tipos de dados não podem ser usados com funções departição?2. Qual é o número máximo de partições permitidas paraumatabela?

3. Qual é o número máximo de pontos de fronteira permitidos para uma funçáode parfiçã,o?

Respostas

1. Você não pode usar text, ntext, ímage, xml, varbínary(max), varchar(max) ouquaisquer tipos de dados CLR.

2. Onúmero máximo de partições paraumatabelaé7.OOO.

5. O número máximo de pontos de fronteira para uma função de partição é.999.

Page 179: Livro_SQL

, Neste exercício, você vai criar um banco de dados e uma funçáo de partiçáo no mesmo.

' L No Microsoft Windows Explorer, crie um diretório chamado C:\Test, se ainda nãoexistir nenhum.

2. Abra uma nova janela de consulta no SQL Server Management Studio (SSMS).

3. Execute a instrução a seguir paracriar um banco de dados de teste:

, --Cria um banco de dados com vários grupos de arquìvo.USE masterGO

CREATE DATABASE partìt'iontestON PRIMARY

. (NAME = primary_data, FILENAME = 'c:\test\db.mdf', SIZE = 2MB),

, FILEGROUP FCl-(NAME = Fcl__data, FILENAME ='c:\test\FG1.ndf', SIZE = 2MB),

F]LECROUP FC2

(NAME = FG2_data, FTLENAME = 'c:\test\FG2.ndf', SIZE = 2MB),: FILECROUP Fc3

(NAME = FG3_data, FILENAME = 'c:\test\FG3.ndf' , SIZE = 2MB),FILECROUP FG4

(NAME = FG4_data, FILENAME = 'c:\test\FG4.ndf', SIZE = 2MB),

l FILEGRoUP Fc5(NAME = FGs_data, FILENAME = 'c:\test\FG5.ndf', S]ZE = 2MB),

FILEGROUP FC6(NAME = FG6_data, FILENAME = 'c:\test\FG6.ndf' , SIZE = 2MB),

, FTLECRoUP FC7

(NAME = FG7_data, FILENAME = 'c:\test\FG7.ndf', SIZE = 2MB),FILEGROUP FG8

(NAME = FG8_data, FILENAME = 'c:\test\FG8.ndf', SIZE = zMB),F]LEGROUP FGg

(NAME = FG9_data, FILENAME ='c:\test\FG9.ndf', SIZE = 2MB),FTLECROUP FGI-O

(NAME = Fclo_data, FILENAME ='c:\test\FG1o.ndf', SIZE = 2MB),F]LECROUP FGl-]-

(NAME = Fc11_data, FILENAME = 'c:\test\FGl_1.ndf', SIZE = 2MB),FILEGROUP FGl-2

(NAME = FGl-2_data, FILENAME ='c:\rest\FGl-2.ndf', SIZE = ZMB),FILECROUP FC1.3

(NAME = Fc1-3_data, FILENAME = 'c:\test\FG13.ndf' , SIZE = 2MB)LOG ON

(NAME = db_1o9, FILENAME = 'c:\test\log.ndf', SIZE = 2MB,FILEGROII/TH = LO% )iGO

USE partitìontestGO

178 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

PRÁT¡cA Criando uma função de part¡ção

Page 180: Livro_SQL

4. Crie uma funçáo de partição com pontos de fronteira paracadamês, como segue:

--Crja uma função de partìção com pontos de fronteira para cada mêsCREATE PARTITION FUNCII0N partfunc (datetime) ASRANGE RICHT FoR VALUES (', L/ L/ 2005

"' 2 /'J,/20O5

"' 3 / L/ 2005

"' 4 /a/2005

"' 5 /a/ 2005

"' 6 / L/ 2005

"' 7 / L/ 2005

"' 8 / L/ 2005

"' I / t/ 2005

"' a0 / t/2005,,

' La/ L/2005

"', 12 / L/ 200s', )

GO

5. Execute o comando a seguir paraver os resultados do passo 4:

SELECT * FROM sys.partition_range_values;

Resumo da liçãor Uma função de partição define os pontos de fronteira para um conjunto de partições.

I Você pode criar uma função de partiçáo como RANGE LEFT ou RANGE RIGHT.

r Vocêpodeutilizarqualquertipodedados,exceto: text,ntext,ímage,varbínary(max),varchar(max), XML ou tipos de dados CLR.

Revisão da liçãoResponda a pergunta a seguir paralestaÍ seu conhecimento sobre a Lição 1. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

Capítulo 6 r Distribuindo e Particionando Dados L79

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no finaldo livro.

1. A Contoso tem um sistema de transação de volume muito alto. Náo há memóriasuficiente no servidor de banco de dados para conter o conjunto de dados ativo; por-tanto, um número muito alto de operações de leitura e gravação está atingido dire-tamente as unidades de disco. Após a adiçáo de vários outros índices, o desempenhoainda não atende as expectativas. Infelizmente, os DBAs não conseguem encontrarmais candidatos para índices adicionais. Não há dinheiro suficiente no orçamentopara memória adicional, servidores adicionais ou um servidor com mais capacidade.Contudo, uma nova rede SAN (Storage fuea Nefwork) foi implemenfada recentemen-te. Que tecnologia a Contoso pode usar para aumentar o desempenho?

A. Log shipping

B. Replicação

C. Particionamento

D. Espelhamento de banco de dados

Page 181: Livro_SQL

180

Lição 2: Criando um esquema de partição

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Um esquema de partiçáo define as estruturas de armazenamento e a coleçáo de gruposde arquivo que você deseja usar com determinada funçáo de partição. Nesta liçáo vocêvai aprender a criar esquemas de partição para mapear uma partição em um grupo dearquivos.

Após esta lição, você será capaz de:I Criar um esquema de partição

Tempo estimado para a lição: 10 minutos

Esquemas de partiçãoOs esquemas de partição fornecem uma definição alternativa para o armazenameîIo.Você define um esquema de partição para abranger um ou mais grupos de arquivo. Asintaxe genérica para criar um esquema de partiçã,o ê:

CREATE PARTITION SCHEME nome_esquema_partiçãoAS PARTIIION none_função_parti çãoI ALL ] T0 ( { nome_grupo_arquivos | [ PR]MARY I ] [,...n ] )

Três exemplos de esquemas de partição são os seguintes:

CREATE PARTITI0N SCHEME mypartscheme AS PARTITION mypartfunction T0(Filegroupl, Fì1egroup2, Fì1egroup3, Filegroup4, Filegroup5, Fì"legroup6,Fi I eg roupT)

CREATE PARTITION SCHEME mypartscheme AS PARTITION mypartfunction T0(Fjlegroupl, Filegroupl-, F'ilegroup2, Fììegroup2, Fì1egroup3)

CREAïE PARTITION SCHEME mypartscheme AS PARTITION mypartfunction ALL T0(Fi I egroupl)

Cada esquema de partição deve ter um nome que obedeça as regras dos identificadores.A cláusula AS PARTITION é usada para especificar o nome da função de partiçáo quevocê deseja mapear no esquema de partiçáo. A cláusula TO especifica a lista de gruposde arquivo que sáo incluídos no esquema de partiçáo.

IMPORTANTE Grupos de arquivo

Todo grupo de arquivos especificado na instrução CREATE PARTITION SCHEMEjá deve existirno banco de dados.

Page 182: Livro_SQL

Um esquema departição deve ser definido de modo a conter um grupo de arquivos paracada partição criada pela função de partição mapeada no esquema de partição. O SeLServer 2008 permite o uso da palavra-chave ALL, como mostrado anteriormente, quepossibilita criar todas as partições definidas pela função de partição dentro de um únicogrupo de arquivos. Se você não usar apalavra-chaveALL, o esquema departiçáo deverâconter pelo menos um grupo de arquivos para cada partiçã.o definida dentro da funçãode partiçáo. Por exemplo, uma função de paniçã.o com seis pontos de fronteira (setepartições) deve ser mapeada em um esquema de partiçáo com pelo menos sete gruposde arquivo definidos. se forem incluídos mais grupos de arquivo do que partições noesquema de partição, os grupos de arquivo excedentes não seráo usados pan arma-zenar dados, a menos que sejam explicitamente especiflcados com o comando ALTERPARTITION SCHEME.

Capítulo6 r DistribuindoeParticionandoDados

@ o,.o DE EXAME

Se você especificar a palavra-chave ALL ao criar um esquema de partição, poderá definir nomáximo um grupo de arquivos.

A Tabela 6-3 mostra como uma função de partiçáo e um esquem a de partiçã,o são mape-ados em grupos de arquivo específicos, como mostra o código a seguir:

CREATE PARTIT]ON FUNCTION

mypartfunction (int)AS RANCE LEFTFOR VALUES (10, 20, 30,40, 50, 60) ;

c0CREATE PARTITION SCHEME mypartscheme(Filegroupl, Fi'legroup2, Filegroup2,Fi I eg roupT) ;

GO

181

Tabela 6-3 Função de partição mapeada em um esquema de partição

FilegroupL

Filegroup2

Filegroup2

Filegroup4

Filegroup5

Filegroup6

AS PARTITION mypartfunction T0Fì1egroup4, Fì1egroup5, Filegroup6,

FilegroupT

L1

27

4L

10

6L

20

30

40

50

60

+oo

Page 183: Livro_SQL

t82 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

*f teste rápido

1. Quantos grupos de arquivo você pode especificar se usar a palavra-chave ALLao definir um esquema de partição?

2. Yocê pode criar um novo grupo de arquivos ao mesmo tempo em que estácriando um esquema de partiçâo?

Respostas

1. Quando usar a palavra-chave ALL, você poderá especificar exatamente umgrupo de arquivos.

2. Náo. Os grupos de arquivo especificados na instrução CREATE P, RTITIONSCHEME jâ devem existir no banco de dados.

PRÁncA Criando um esquema de part¡ção

Neste exercício, você vai criar um esquema de partição mapeado na função de partiçáodo exercício anterior.

1. Abrauma nova janela de consulta no SSMS e mude o contexto parao banco de

dados Partítíontest.

2. Execute a instruçáo a seguir para criar um esquema de partiçáo mapeado na funçãode partição:

CREATE PARTITION SCHEME partscheme AS

PARTITI0N partfunc TO(tFGl_], lFG2l, tFG3l, [FG4], [FGs], tFG6l, [FC7], tFG8l, tFcgl, [FG1_0],

IFc]_1_1, IFc12], tFcl_31)c0--Vê o esquema de partìçãoSELECT * FROM sys.partìtion_schemes;

Resumo da liçãor Um esquema departiçâo é uma definição de aÍmazenamento contendo uma coleção

de grupos de arquivo.

r Se você especificar a palavra-chave ALL, o esquema de partiçáo permitirâ a defini-

ção de apenas um grupo de arquivos.

r Se náo especificar apalavra-chaveALL, você deverá definir grupos de arquivo sufi-cientes para mapear todas as partições criadas pela funçáo de partição.

Revisão da liçãoResponda a pergunta a seguir parateslar seu conhecimento sobre a Lição 2. A.pergantatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

Page 184: Livro_SQL

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no finaldo livro.

1. A Margie's Travel quer manter pedidos em seu banco de dados de processamentode transaçáo online por um máximo de 30 dias a pafür da data em que um pedidoé,feilo. A tabela de pedidos inclui uma coluna chamada OrderDate que contém adata em que um pedido foi feito. Como os DBAs da Margie's Travel podem mover ospedidos mais antigos do que 30 dias da tabela de pedidos com o mínimo impactonas transações de usuário? (Escolha duas. Cada resposta representa uma parte dasoluçáo.)

A. Usar o operador SWITCH para mover as partições de dados que contêm dadosmais antigos do que 30 dias.

B. Criar um procedimento atmazenado (stored procedure) que exclua todos os pe-

didos mais antigos do que 30 dias.

C. Particionar a tabela de pedidos usando a funçã,o de partiçáo definida para umtipo de dados datettm¿, usando a coluna OrderDate.

D. Criar umatarefa para excluir os pedidos mais antigos do que 30 dias.

Capítulo 6 r Distribuindo e Particionando Dados 183

Page 185: Livro_SQL

L84

Lição 3: Criando tabelas e índices particionados

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

O último passo na criaçã,o de uma tabela ou índice particionado ê, criar a tabela ou índi-ce em um esquema de partição por meio de um particionamento de coluna. Nesta liçãovocê vai aprender a criar tabelas e índices particionados.

Após esta lição, você será capaz de:I Criar uma tabela particionada

I Criar um índice particionado

Tempo estimado para a lição: 10 minutos

Criando uma tabela particionadaA criação de uma tabela, um índice ou uma view indexada particionada é muito pare-cida com a criaçâo de uma tabela, um índice ou uma view indexa da não particionada.Todo objeto criado tem uma cláusula ON que especifica onde o SQL Server deve armaze-nar o objeto. A cláusula ON é rotineiramente omitida, fazendo o SQL Server criar objetosno grupo de arquivos padrâo. Como um esquema de partição é apenas uma definiçáo deatmazenamento, o particionamento de uma tabela, um índice ou uma view indexada é

um processo muito simples.

Um exemplo detabela particionada aparece a seguir:

CREATE TABLE Employee (EmployeelDFi rstNameLastName

0N mypartscheme(Empl oyeeID) ;

GO

O segredo estâ na cláusula ON. Em vez de especificar um grupo de arquivos no qual vaicriar atabela, você especifica um esquema de partição. O esquema de partiçâo com ummapeamento para uma função de partiçáo já foi definido. Assim, você precisa especifi-car a coluna na tabela, a chave de particionamento, na qual a função de partição serát

aplicada. No exemplo anterior, criamos uma tabela chamada Employee e usamos a co-luna EmployeelD para particionar a labela com base na definição da função de partiçáoque foi mapeada no esquema de partição no qual a tabela está, armazenada. A Tabela6-4 mosúa como os dados são particionados na tabela Employee, como mostrado nocódigo a seguir:

CREATE PARTITION FUNCTION

mypartfunction (i nt)AS RANGE LEFTFOR VALUES (10,20,30,40, 50,60) ;

c0CREATE PARTITION SCHEME mypartscheme(F'i1egroup1, Fì1egroup2, Filegroup3,Fi 1 egroupT) ;

CO

i nt NOT NULL

varchar(50) NOT NULL;

varchar(50) NOT NULL)

AS PARTITION mypartfunctjon T0Fì1egroup4, Filegroup5, Fì1egroup6,

Page 186: Livro_SQL

CREATE TABLE Employee (EmployeelDFi rstNameLastName

ON

GO

mypartscheme (Emp'l oyeeID) ;

Tabela 6-4 Função de partição mapeada em um esquema de partição

FilegroupL

Filegroup2

Capítulo6 r DistribuindoeParticionandoDados

Filegroup3

Filegroup4

Filegroup5

Filegroup6

FilegroupT

intvarchar (50)varchar (50)

A chave de particionamento especificada deve corresponder ao tipo de dados, compri-mento e precisão da função de partição. Se a chave de particionamento for uma colunacalculada, a coluna calculada deverâ ser PERSISTED.

NOT

NOT

NOT

NOTA Backup e restauração parciais

NULL,NULL,

NULL)

O particionamento tem um efeito de gerenciamento interessante em suas tabelas e índices.Com base na definição da função de partição e no esquema de partição, é possível determinaro conjunto de linhas que estarão contidas em determinado grupo de arquivos. Usando essa

informação, é possível fazer o backup e restaurar parte de uma tabela, assim como manipularos dados em uma parte de uma tabela sem afetar nenhuma outra parte da tabela.

2t

185

31

41

Criando um índice part¡c¡onado

51

61

Semelhantemente à criaçã,o de uma tabela particionada, você particiona um índice es-pecificando um esquema de partiçã,o na cláusula ON, como no exemplo de código aseguir:

CREATE NONCLUSTERED INDEX ìdx_employeefi rtname0N dbo.Employee(FirstName) 0N mypartscheme(EmpìoyeefD) ;

GO

Ao especificar achave de particionamento para um índice, você não está limitado àscolunas nas quais o índice está definido. Conforme você aprendeu no Capítulo 4, "Pro-jetando índices do SQL Server", um índice pode ter uma cláusulaINCLUDE opcional.Quando você cria um índice em uma tabela particionada, o SQL Server inclui automati-camente a chave de particionamento na definição de cada índice, permitindo assim queum índice seja particionado da mesma maneira que a tabela.

30

40

50

60

+oo

Page 187: Livro_SQL

186 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

t'teste rápido

1. Que propriedade deve ser configurada para se usar uma coluna calculadacomo chave de particionamento?

2. Que cláusula das instruções CREATE TABLE ou CREATE INDEX é usada paruparticionar o objeto?

Respostas

1. Uma coluna calculada deve ser PERSISTED.

2. A cláusula oN é usada para especificar a estrutura de armazenamento, o gru-po de arquivos ou o esquema de partiçáo para a tabela ou índice.

PRÁilcA Particionando uma tabelaNeste exercício, você vai criar uma tabela parlicionada usando a funçáo de partição e oesquema de partição que você criou em exercícios anteriores.

1. Abra uma nova janela de consulta no SSMS e mude o contexto parao banco dedados Partítíontest.

2. Crieumatabela de pedidos no esquema de partição, como segue:

CREATE TABLE dbo.orders (

OrderAmount money NOT NULL

CoNSTRAINT pk_orders PRIMARY KEY CLUSTERED (orderDate,orderID))0N partscheme(0rderDate)GO

3. Preencha atabela de pedidos com alguns dados executando o código a seguir:

SET NOCOUNT ON

DECLARE @month ì nt,@day i nt

SET @month = 1-

SET @day = Il^fHILE @month <= 12BEGIN

IIIIHILE @day <= 28BECTN

INSERT dbo.orders (OrderDate, OrderAmount)SELECT cast(@month as varchar(2)) + '/' + cast(@day as varchar(2))

+ '/2005 ', @day * 20

SET @daY = @day + 1END

SET @day = 1-

SET @rnonth = @month + 1

0rde rID0rde rDate

intdatetime NOT NULL,

i denti ty(1-, 1-) ,

Page 188: Livro_SQL

4. Yeja a distribuiçáo de dados básica executando o seguinte:

SELECT * FR0M sys.part'itionshIHERE object_id = 0BIECT_ID('dbo-orders' )

Resumo da lição

END

c0

r A cláusula ON é usada para especificar a estrutura de armazenamento, o grupo dearquivos ou esquema de partição para aÍmazenar uma tabela ou índice.

I A chave de particionamento deve corresponder ao tipo de dados, comprimento e

precisão da função de partiçáo.

I Uma coluna calculada usada como chave de particionamento deve ser persistida.

Revisão da lição

Responda a pergunta a seguir paratestar seu conhecimento sobre aLiçáo 3. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisâ-la em formatoeletrônico.

Capítulo6 r DistribuindoeParticionandoDados

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. A Wide World Importers tem um data warehouse muito grande e ativo que precisaestar acessível para os usuários 24 horas por dia, sete dias por semana. A equipede DBA precisa canegar novos conjuntos de dados semanalmenfe para dar suportepara as operações empresariais. Inserir grandes volumes de dados aletaria os usuá-rios de forma inaceitável. Que recurso deve ser usado para minimizar o impacto,enquanto ainda manipula os carregamentos de dados semanais?

A. Replicação transacional

B. O operador SWITCH dentro do particionamento

C. Espelhamento de banco de dados

D. Snapshots de banco de dados

187

Page 189: Livro_SQL

188

Lição 4: Gerenciando partiçöes

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Depois que você particiona uma tabela ou índice, o SQL Server armazena os dados au-tomaticamente de acordo com a definição de sua função de paniçáo e esquema de parti-ção. Com o passar do tempo, as necessidades de particionamenío de seus dados podemmudar. Nesta lição você vai aprender a mudar a definição de uma funçáo de partição, oesquema de partiçáo e a gerenciar partições dentro de um banco de dados.

Após esta lição, você será capaz de:I Adicionar e remover pontos de fronteira de uma função de partição

I Adicionar grupos de arquivo em um esquema de partição

I Designar um grupo de arquivos para ser usado na próxima partição criada

I Mover partiçöes entre tabelas

Tempo estimado para a lição:20 minutos

Operadores Split e MergeCom os dados mudando constantemente, as partições raramente são estáticas. Doisoperadores estão disponíveis para gerenciar as definições de ponto de fronteira - SPLITeMERGE.

O operador SPLIT introduz um novo ponto de fronteira em uma função de partição. MERGEelimina um ponto de fronteira de uma função de partíçáo. A sintaxe geral é a seguinte:

ALTER PARTITION FUNCTTON nome_função_part'içãoo{SPLIT RANGE ( valor_fronteira )

I MERCE RANGE ( valor_fronteira ) Ì t ; lDeve-se tomar muito cuidado ao usar os operadores SPLIT e MERGE.Yocê, esfâ adicio-nando ou removendo uma paÍtiçã,o inteira da função de partiçáo. Com esses operadores,os dados não estáo sendo removidos da tabela, somente apartiçáo está. Como uma par-tição pode residir somente em um grupo de arquivos, uma operação de SPLIT ouMERGEpoderia causar uma quantidade de llO (entrada e saída) de disco significativa quando oSQL Server reposicionasse linhas no disco.

Alterando um esquema de part¡ção

Você pode adicionar grupos de arquivo em um esquema de partição existente para criar maisespaço de armazenamento para umatabela particionada. A sintaxe geralé a seguinte:

ALTER PARTITION SCHEME nome_esquema_partiçãoNEXT USED I none_grupo_de_arquivos I I ; lA cláusula NEXT USED tem dois objetivos:

1. Ela adiciona um novo grupo de arquivos no esquema de partição, caso o grupo dearquivos especificado ainda não flaça parte do esquema de partição.

2. EIa marca a propriedade NEXT USED para um grupo de arquivos.

Page 190: Livro_SQL

O grupo de arquivos marcado com o flagNEXT USED ê, o grupo de arquivos que conteráa próxima parlição criada quando uma operação SPLITfoT executada.

Alinhamento de índices

Você pode particionar uma tabela e seus índices associados de forma diferente. O únicorequisito é que você precisa particionar o índice clusterizado (clustered) e a tabela damesma maneira, pois o SQL Server náo pode anmazeîar o índice ch)steñzado em umaestrutura separada da tabela.

Contudo, se uma tabela e todos os seus índices sáo particionados usando a mesma fun-ção de partição, diz-se que eles estão alínhados . Se uma tabela e todos os seus índicesusam a mesma função de partição e o mesmo esquema de partiçáo, o armazenamentotambém é alinhado. Um diagramabâsico de uma tabela de armazenamento alinhadoaparece naügata 6-2.

Com o alinhamento do armazenamento, as linhas de uma tabela, junto com os índicesdependentes das linhas, sáo atmazenadas nos mesmos grupos de arquivo. Isso garanteque, se for feito o backup ou a restauração de uma única parliçáo, os dados e os índicescorrespondentes serão mantidos juntos, como uma unidade.

Operador Switch

Neste ponto, o particionamento provavelmente está confuso. Afinal, o objetivo do par-ticionamento é dividir uma tabela e seus índices associados entre várias estruturas dearmazenamento. O objetivo de cada operador é gerenciar as várias estruturas de arma-zenamenlo. Contudo, o particionamento possibilita recursos de gerenciamento de dadosavançados que vão bem além de simplesmenle aÍmazenat pafie de uma tabela em um

Capítulo6 r DistribuindoeParticionandoDados 189

Partição

Figura 6-2 Alinhamento de armazenamento.

índice particionado

Tabela particionada(Dados)

Grupos de arquivo

Page 191: Livro_SQL

190 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

grupo de arquivos. Para entendermos o efeito, devemos retroceder e ver o layout bâsicodos dados dentro do SQL Server.

O SqL Server aÍmazena os dados nas páginas em uma lista duplamente encadeada.Paralocalizar e acessar dados, o SQL Server executa o seguinte processo básico:

1. Transforma o nome databela em uma ID de objeto.

2. Localiza a entrada da ID de objeto em sys.índexes para extrair a primeira página doobjeto.

3. Lê a primeira pâgina do objeto.

4. Usando as entradas Next Page (Próxima Página) e Previous Page (PáginaAnterior)em cada pâgina de dados, percorre o encadeamento de páginas panlocalizar osdados necessários.

A primeira pâgina de um objeto não tem uma página anterior; portanto, o valor de en-trada é definido como 0:0. A última pâgina do objeto náo tem uma entrada de próximapâgina; portanto, o valor da entrada é definido como O:0. Quando élocalizado um valor0:0 para a próxima pâgina, o SQL Server náo precisa ler mais nada.

O que a estrutura de encadeamento de páginas tem a ver com o particionamento? Quan-do uma tabeTa é particionada, os dados são classificados fisicamente, divididos em se-

ções e armazenados em grupos de arquivo. Assim, da perspectiva do encadeamento depâginas, o SQL ServerTocaliza a primeira página do objeto na partição 1, percorre oencadeamento de pâginas, atinge a última pâgina na partição 1 , a qual aponta para aprimeira pâgina na partiçáo 2, e continta pelo restante da tabela. PeTa criaçáo de umaordenação fisica dos dados, uma possibilidade muito interessante se torna disponível.

Se você fosse modificar o ponteiro na última pâgina da partição 7 pan ter o valor O:O

para a próxima página, o SQL Server não leria depois desse ponto e isso faria os da-dos "desaparecerem" da tabela. Não haveria nenhum bloqueio ou deadlock, pois teriaocorrido uma operação simples, somente com metadados, para atualizar o ponteiro depâgina. A ideia básica de uma operação com metadados aparece na Figura 6-3.

Seria ótimo simplesmente descartar parte de uma tabela. Contudo, o SQL Server nãopermite que você jogue dados fora. É aí que o operador SWITCH entra em ação. A ideiabâsica é que SWITCH permite trocar partições entre tabelas de maneira perfeitamenteexpansível, sem lock, bloqueio ou deadlock.

SWITCH tem vários requisitos para garanlir que a operaçáo seja perfeitamente expansí-vel. Os requisitos mais importantes são os seguintes:

r Os dados e o índice das tabelas de origem e destino devem ser alinhados.

I As tabelas de origem e destino devem ter a mesma estrutura.

I Os dados náo podem ser movidos de um grupo de arquivos para outro.

I Duas partições com dados náo podem ser trocadas.

r A partição de destino deve esfarvazia.

r A Þbela de origem ou de destino não pode participar de replicação.

I As tabelas de origem e destino náo podem ter índices full text ou um tipo de dadosFILESTREAM definidos.

Page 192: Livro_SQL

Capítulo6 r DistribuindoeParticionandoDados

Fryru

FFru

Satisfazendo esses requisitos, você pode conseguir um efeito semelhante à Figura 6-4.

Edição de metadados

-

Figura 6-3 Lista duplamente encadeada.

l'*rl

¡PARTITION 4

l*"l

¡

ALTER TABLE Table2 SWITCH PARTITION TO Tab|el PARTITION

Figura 6-4 Troca de uma partição.

Page 193: Livro_SQL

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

D¡CA DE EXAME

Para o exame 70-432, você precisa saber que em uma operação SWITCH não pode mover da-

dos de um grupo de arquivos para outro nem trocar duas partiçöes com dados.

.f t"rt" rápido

1. Quais operadores são usados para adicionar ou remover pontos de fronteirade uma função de partiçáo?

2. Qual operador é usado para mover partições entre tabelas?

Respostas

1. o operador SPLIT ê, usado para introduzir um novo ponto de fronteira. o ope-

rador MERGE é usado para remover um ponto de fronteira.

2. o operador SWITCH é usado para mover partições entre tabelas.

pRÁTtcA Cenário da janela deslizanteNeste exercício, você vai utilizar os operadores SPLIT, MERGE e SWITCH para remover

dados de uma tabela para que possam ser arquivados sem afefar o desempenho de con-

sulta na tabela operacional. No exercício dalição 3, você configurou atabela de pedidos

com 12 meses de dados de pedidos. Neste exercício, usando a openção SPLIT, você'

vai criar uma nova partiçâo para janefto de 2006. Usando a função SWITCH, você vairemover a pafüçâo de janeiro de 2OO5 para que possa ser arquivada. Usando a lunçâoMERGE , vai eliminar o ponto de fronteira de janeiro de 2005.

os dados da tabela de pedidos devem ser assim:

Tabela 6-5 Distribuição de dados da tabela de

FG]"

tG2

FG3

FG4

FG8

L/t/200s

FG9

2/L/2005

FGlO

3/L/200s

FG].1

4/L/200s

s/tl200s

idos

6/L/2Oos

12/31,/2004

7/L/200s

L/31/200s

8/L/200s

2/28/200s

9/t/200s

3/3L/2oos

LO/L/2005

4/30/2005

s/3L/200s

6/30/200s

7/31/2005

8/3L/200s

9/30/200s

t0/3L/2005

(continua)

Page 194: Livro_SQL

Tabela 6-5 Distribuição de dados da tabela de pedidos (continuoçõo)

FGI2

FG13

1. Altere o esquema de partição para configurar o flag NEXT USED em FGI comos€$ue:

ALTER PARTITION SCHEME partschemeNEXT USED [FG1];c0

2. Inlroduza um novo ponto de fronteira para janeiro de 2006 como segue:

ALTER PARTITI0N FUNCTION partfuncoSPLIT RANGE (',L/L/2006',);c0

3. Crie uma tabela de arquivamento para os pedidos de janeiro de 2005 como segue:

CREATE TABLE dbo.ordersarchive (

Capítulo6 r DistribuindoeParticionandoDados

LL/t/2005

L2/L/200s

LL/30/2005

CONSTRAINT ck_orderdate CHECK (OrderDate<' 2/L/2005' ),OrderAmount money NOT NULL

CONSTRAINT pk_ordersarchive PRIMARY KEY CLUSTERED (0rderDate,0rderID))

ON FG2

GO

4. Use o operador SWITCH para remover a parliçáo de janeiro de 2005 de orders eanexâ-la em ordersarchive como segue:

ALTER TABLE dbo.ordersShITTCH PARTITION 2 T0 dbo.ordersarchiveGO

5. Remova o ponto de fronteira de janeiro de 2005 como segue:

ALTER PARTITION FUNCTION partfuncoMERGE RANCE (', L/L/2O05') ;

GO

6. Verifique o conteúdo das tabelas orders e ordersarchive.

0rderID0rderDate

193

intdatetime NoT NULL

NOT NULL,

Resumo da lição

I SPLIT é usado para introduzft um novo ponto de fronteira em uma função de par-riçáo.

a MERGE é usado para remover um ponto de fronteira de uma função de partiçãto.

I SWITCH é usado para mover partições entre tabelas.

Page 195: Livro_SQL

t94

Revisão da lição

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Responda apergvnta a seguir paÍatestar seu conhecimento sobre aLiçã,o 4. Apergantatambém está disponível no CD do livro (em inglês) se você preferir revisâ-la em formatoeletrônico.

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. A Contoso Limited tem um sistema de entrada de pedidos de volume muito alto. Agerência determinou que os pedidos devem ser mantidos no sistema de operação nomáximo por seis meses, antes de serem arquivados. Depois que os dados da tabelasáo arquivados, eles sáo canegados no data warehouse. O canegamento de dadosocorre umavez por mês. Qual tecnologia é a escolha mais adequada para arquivardados do sistema de entrada de pedidos?

A. Espelhamento de banco de dados

B. Replicaçáo transacional

C. Snapshots de banco de dados

D. Particionamento

Page 196: Livro_SQL

Revisão do capítuloPararelorçar o que aprendeu neste capítulo, você pode:

I Ler o resumo do capítulo.

r Examinar a lista de termos-chave introduzidos neste capítulo.

I Completar o cenário de caso. Esse cenário aborda situações reais que envolvem os

tópicos deste capítulo e solicita que você crie uma soluçáo.

r Completar as práticas sugeridas.

I Fazü um teste.

capítulo6 r DistribuindoeParticionandoDados

Resumo do capítulor O particionamento permite dividir uma tabela ou índice entre vários grupos de ar-

quivo.

r As tabelas e índices são particionados horizontalmente, com base nas linhas, pelaespecificação de uma coluna de particionamento.

a Para criar uma tabela ou índice particionado, você precisa executar as seguintesações:

r Criar uma função de partiçáo.

r Criar um esquema de partição mapeado na funçáo de partição.

I Criar umalabela ou índice no esquema de partição.

r A função fPARTITION permite limitar as consultas a uma partição específica.

r Você usa a função SPLIT para adicionar um novo ponto de fronteira e, portanto,uma partição.

r Você usa a função MERGE para remover um ponto de fronteira e, portanto, umapartição.

r Você usa a funçáo SWITCH para mover uma partição de dados entre tabelas.

Termos-chave

Você sabe o que estes termos-chave significam? Conftra suas respostas consultando o

glossário no final do livro.

r Alinhamento de índices

r Função de partiçáo

r Chave de particionamento

I Esquema de partição

195

Page 197: Livro_SQL

Cenário de caso

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

No cenário de caso a seguir, você vai aplicar o que aprendeu neste capítulo. As respostasdessas questões podem ser encontradas na seção "Respostas", no final deste livro.

Cenário de caso: Construindo uma infraestruturano SQL Server para a Coho Vineyard

Histórico

Visão geralda empresa

A Coho Vineyard foi fundada em 1947 como uma vinícola regional dirigida por umafamÍlia. Graças aos vinhos premiados produzidos nas últimas décadas, a Coho Vineyardteve crescimento significativo. Atualmenle, a empresa possui 72vinîcolas espalhadaspelo meio-oeste dos Estados Unidos e emprega 400 pessoas, T4 das quais trabalham noescritório central, que abriga servidores fundamentais para o negócio.

Mudanças planejados

Alé, agora, cada uma das 12 vinícolas pertencentes à Coho Vineyard tem um site sepa-rado em suas instalações. A Coho Vineyard quer consolidar a presença na Web dessasvinícolas para que os visitantes dos sites possam comprar produtos de todas as 72

vinícolas a partir de uma únicaloja online. Todos os dados associados a esse site serãoarmazenados em bancos de dados no escritório central.

Ambiente de dados existente

Boncos de dados

Atualmente, cada vinícola mantém seu próprio banco de dados para armazenar todas as

informações empresariais. Ao final de cada mês, essas informações são trazidas pan o

escritório central e transferidas para os bancos de dados mostrados naTabela 6-6.

Tabela 6-6 Bancos de dados da Coho Vineyard

Customer

Accounting

lnventory

Promotions

Depois que o projeto de consolidaçáo do banco de dados estiver concluído, um novobanco de dados, chamado Order, servirâ como back end para a nova loja da Web. Comoparte de seu trabalho diário, os funcionários também se conectarão periodicamente nobanco de dados Order usando um novo aplicativo Web interno.

180 MB

5OO MB

1OO MB

250 MB

80 MB

Page 198: Livro_SQL

Servidores de banco de dodos

Um único servidor, chamado DB1, contém todos os bancos de dados no escritório cen-tral. DB1 está executando SQL Server 2O0S,Enferprise Edition, no Windows Server2003, Enterprise Edition.

Requisitos empresariais

Desempenho

Você precisa projetar uma soluçáo de arquivamento para os bancos de dados Customere Order. Sua estratégia de arquivamento deve permitir que os dados de Customer sejamguardados por seis anos.

Para pteparar o banco de dados Order pan os procedimentos de arquivamento, você criauma tabela particionada chamada Order.Sales. Order.sales inclui duas partições. A par-tiçao 1 incluirá a atividade de vendas do mês corrente. A partiçáo 2 seÉt usada para ar-mazeoaÍ a atividade de vendas do mês anterior. Os pedidos feitos antes do mês anteriordevem ser movidos para oulra tabela particionada, chamada Order.Archive. A partição 1

de order.Archive incluirá todos os dados arquivados. A partição 2 permanecerá,vazia.

Essas tabelas e suas partições estão ilustradas na Figura 6-5.

Capítulo6 r DistribuindoeParticionandoDados

Order.Sales

L97

Order.Archive

Figura 6-5 Partições na Coho Vineyard

Operações SPLIT MERGE e SWITCH seráo usadas para mover os dados entre essas par-tições.

Page 199: Livro_SQL

198 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Responda as perguntas a seguir:

1. Quais dos métodos a seguir permitem atender os requisitos de arquivamento do

banco de dados Customer com a mínima sobrecarga administrativa?

A. Importar todos os dados de Customer para uma planilha do Microsoft OfficeExcel. Guardar as planilhas em disco por seis anos.

B. Fazer um backup mensal de todos os dados de Customer em fita. Guardar os

backups em um local seguro por seis anos.

C. Criar um novo banco de dados chamadoArchíveData eusar replicação de ban-co de dados para migrar os dados de Customer para o novo banco de dadosa cada mês. Manter todos os dados no banco de dados ArchtveData por pelomenos seis anos.

D. Náo copiar os dados de Customer em outro local. Simplesmente guardar todosos dados do banco de dados Customer por pelo menos seis anos.

2. Como você deve mover a Partição 2 databela Order.Sales paraatabela Order.Archive?

A. Usar uma operação SPLIT para mover dados para aPattição 1 em Order.Archive.

B. Usar uma operação SPLIT para mover dados para aParlição 2 em Order.Archive.

C. Usar uma operação SWITCH para mover dados para a Partiçáo 1 em Order.

Archive.

D. Usar uma operaçáo S\MTCH para mover dados para a Partiçã,o 2 em Order.

Archive.

3. Quais das seguintes duas partições devem estat localizadas no mesmo grupo de

arquivos?

A. Partições 1e2 em Order.Sales

B. Partições 7 e2 em Order.Archive

C. Partiçãto 2 em order.Sales e Partição 2 em Order.Archive

D. Partiçáo 1 em Order.Sales e Partiçáo 1 em Order.Archive

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

ParticionamentoNesta tarefa, você vai praticar o particionamento de tabelas e o uso dos operadoresSPLIT, MERGE e SWITCH para arquivar dados, assim como para caÍÍegar dados.

r Exercício 1 Crie uma tabela particionada e pratique a adiçáo de grupos de arqui-vo, assim como a divisão e mesclagem (merge) de partições.

Page 200: Livro_SQL

r Exercício 2 Usando atabela particionada do Exercício 1, crie uma tabela de arqui-vamento para usar com o operador SWITCH para remover dados.

I Exercício 3 Usando a tabela de arquivamento criada no Exercício 2, use o opera-dor SWITCH para anexaÍ os dados em outra tabela.

Faça um testeOs testes do CD deste livro (em inglês) oferecem muitas opções. Você pode Tazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-ficaçáo 70-432. É possível configurar o teste para que ele simule a experiência de fazerum exame de certificação ou configurá-lo no modo de estudo (study mode) para ver asrespostas corretas e explicações depois de cada questão.

Capítulo6 r DistribuindoeParticionandoDados

MAIS INFORMAçöES Testes

Para mais detalhes sobre todas as opçöes de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

199

Page 201: Livro_SQL
Page 202: Livro_SQL

!,mportan{A maioria dos aplicativos é projetada de forma a permitir que os usuários manipulemdados individuais. Contudo, existem ocasiões em que você precisa importar ou exportargrandes volumes de dados. Ao se importar um grande volume de dados, a instrução 1il-SERT não é muito eficiente. Do mesmo modo, ao se exportar dados náo é muito eficienteretornar um conjunto de resultados para um aplicativo que, então, precisará gravat aslinhas em um arquivo ou em algum outro destino. Neste capítulo, você vai aprendersobre os recursos que o SQL Server tem disponíveis para importar e exportar eflciente-mente grandes volumes de dados, ao passo que consome um mínimo de recursos.

Objetivo de exame neste capítulo:

I Importar e exportar dados.

Lição deste capítulo:

r Lição 1: Importando e exportando dados 2Os

Antes de começarParafazer as liçóes deste capítulo, você deve ter:

r o Microsoft SQL Server 2008 instalado

I o banco de dadosAdventureWorþ.s instalado dentro da instância

:.'.1,..",,1,

:.':1.'1-".."

-;.-.'.'"1--

,l1h\'wP Mundo real

Míchael Hotek

Há alguns anos, estava trabalhando junto a um cliente que tinha uma divisãointeira da empresa concentrada em preencher pedidos para parcekos. Uma vezpor dia, os parceiros faziam upload de arquivos em nosso servidor FTP com seuspedidos. Os arquivos eram analisados, carregados em um banco de dados e,

então, encaminhados pelo processo de seleção, empacotamento, remessa e fa-turamento. Infelizmente, o processo podia demorat de duas a sete horas paraimportar os pedidos de cada parceiro, mas a empresa precisava de todos os ar-quivos do parceiro importados dentro de uma hora para cumprir os acordos comseus clientes. Era muito comum ter 30 ou mais arquivos parados em uma pasta,esperando para serem processados. Além disso, apenas cerca de 5o/o dos parceirospodiam fazer upload de pedidos em massa, pois o sistema não conseguia mani-pular nenhuma carga adicional.

Page 203: Livro_SQL

202 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

o sistema construído para importar os pedidos era composto de cerca de uma de-zena de aplicativos em C+ + , mais de 30 pastas abrangendo três servidores e umapequena quantidade de código dentro do banco de dados para onde os pedidoseram importados. Escritos há mais de uma década, mais de 90o/o do trabalho feitodentro dos aplicativos era mover arquivos entre diretórios e o único objetivo dosdiretórios era isolar arquivos durante o processamento. Uma pesquisa mais de-talhada descobriu um código para gerenciar vários aplicativos teniando acessaro mesmo arquivo, uma situação que na verdade era criada pela maneira como osistema como um todo foi construído.

Depois que os arquivos finalmente chegaram ao ponto onde estava sendo processa-

do algo com que a empresa se preocupava, descobrimos um aplicativo que lia umalinha do arquivo porvez e a processava.Para cada linha processada, o aplicativoexecutava mais de 100 consultas para validar códigos de produto, o estoque exis-tente, os níveis de preço e várias outras regras empresariais.

Reescrevemos o sistema inteiro para usar os recursos de importação em massa doSQL Server. A primeira fase da reescrita substituiu todo o código C-l *, assim comoa estrutura de pastas inteira por uma única pasta, um procedimento armazenado(stored procedure) para usar BCP nos arquivos e um procedimento armazenado(stored procedure) para processar tudo depois que o arquivo era importado. Umafase subsequente substituiu a rotina BCP por um pacote SSIS capaz de processarvários arquivos em paralelo e que era mais flexível no tratamento de múltiplosformatos de dados.

Ao concluirmos a fase 7, arctina de importação estava ultrapassando a capacidadedos parceiros de fazer upload de arquivos. Dentro de um minuto depois de enviadoo arquivo, todos os dados eram importados para o SQL Server e processados, e ospedidos estavam no armazém, enfileirados para empacotamento. Após terminar-mos a fase 2, podíamos estender o serviço de upload de pedidos para os outros95% dos parceiros, e mesmo os maiores arquivos de pedido eram processados e

reconhecidos dentro de 15 segundos após o arquivo ser enviado. O resultado diretopara a empresa foi não somente a manutençáo de seus clientes atuais, mas umacréscimo em sua base de clientes, o que estimulou um aumento de mais de 400o/o

nos negócios no prazo de seis meses após a implementaçáo do novo sistema.

Page 204: Livro_SQL

Lição 1: lmportando e exportando dadosO comando BULK INSERZ e o BCP (Bulk Copy Program) sáo usados para fornecer re-cursos de importaçáo e exportaçáo limitados. Nesta liçáo, você vai aprender a usar outilitário BCP para exportar e importar dados. Você também vai aprender a importardados usando o comando BULK INSERT e o lmport and Export Wizard do SQL Server,

disponível dentro do SQL Server Management Studio (SSMS).

Após esta lição, você será capaz de:I Exportar dados para um arquivo usando BCP

I lmportar dados de um arquivo usando BCP

I lmportar dados de um arquivo usando BULK INSERT

I lmportar e exportar dados usando o lmport and Export Wizard do SQL Server

Tempo estimado para a lição:20 minutos

Capítulo7 r lmportandoeExportandoDados

Bulk Copy ProgramO BCPexe, ou BCB é o código mais antigo dentro do SQL Server. Lembro ter utilizado o BCP

para importar e exportar dados antes mesmo que a Microsoft tivesse licenciado a primeiraversão do SQL Server da Sybase. Embora tenha sido aprimorado em mais de duas décadasem que tenho usado o BCB toda a sintaxe original, o objetivo e o desempenho não muda-ram. Em poucas palavras, o BCP é a maneira mais eficiente de importar dados bem defini-dos em arquivos para o SQL Server, assim como para exportar tabelas para um arquivo.

O BCP foi projetado como uma soluçáo leve e muito râpida para impofiar e exportardados. Ele também foi projetado para manipular dados bem formatados. Se você precisarcalizar transformações ou executar rotinas de tratamento de erro durante o processo deimportação/exportação, entáo deve usar o SSIS (SQL Server Integration Services) paraesse tipo de processo.

Se você estiver exportando dados com o BCB a conta sob a qual ele está sendo execu-tado só precisarâ de permissões SELECT na tabela ou view. Se você estiver imporiandodados, a conta sob a qual o BCP está sendo executado precisará de permissões SELECT,TNSERTeALTER TABLE.

O BCP é um utilitário executado apartir da linha de comando e tem a seguinte sintaxe:

bcp {l fnome_banco_de_dados.] fproprietário] .l {nome_tabela I nome_modo_vìsualização] | "consulta"]

{in I out I queryout I formato} arquivo_dadosl-mmax_errorsl [-fformato_arquivo] t-xl [-eerr_arquivo][-Fprimei re_linha] [-Lúltima_linha] [-btamanho_lote][-n] [-c] t-wl t-Nl t-v (60 | 6s | 70 | 80)l t-61t-ql t-C { ACP | OEM I RAhl I página_código } I l-ttermo_campol[-rtermo_linha] [-iarquivo_entrada] [-oarquivo_saída] l-atamanho_pacotel[-Snome_servidor[\nome_instância]l [-Uid_login] [-Psenha]t-Tl l-vl t-Rl t-kl t-El t-h"dica [,...n]"1

203

Page 205: Livro_SQL

204 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Embora o BCP tenha muitas opções, também conhecidas como chûves de línha de co-mando, normalmente você usa um pequeno conjunto delas.

cUlÐADo Diferenciação de letras maiúsculas e minúsculas

Todas as chaves de linha de comando do BCP diferenciam letras maiúsculas e minúsculas. Porexemplo, você usa -e para especificar um arquivo de erro, enquanto -E diz ao BCP para quepreserve valores de identidade durante uma importação.

A seguir estáo três exemplos de comandos BCP comuns:

bcp Adventureldorks.HumanResources.Department out c:\test\department,txt -n-SHOTEK -T

bcp Adventuret¡forks,HumanResources.Department in c:\test\department.txt -c-SHOTEK -U<1ogìn> -P<password>

bcp "SELECT Name, GroupName FR0M HumanResources.Department" queryoutc:\test\department.txt -n -SH0TEK -T

NOTA Fontes de exportação

Por simplicidade, todas as discussöes sobre importação e exportação de dados deste capítulose referem a uma tabela. Você pode exportar a partir de tabelas ou views. Você também podeimportar dados para uma view desde que a view satisfaça os requisitos para execução de umainstrução /NSERL

O primeiro argumento especifica aíabela ou consulta em que o BCP opera. O terceiroargumento especifica o arquivo que é a origem ou destino do comando BCP

O segundo argumento do comando BCP pode ser configurado como ín, out ou queryout.

Quando a chave é configurada como ín, o comando BCP importa o conteúdo inteiro doarquivo especificado na tabela especificada. Se o segundo argumento é configuradocomo out, o BCP exporta o conteúdo inteiro da tabela para o arquivo especificado. Se

quiser exportar somente um subconjunto de uma tabela ou o conjunto de resultados de

uma consulta, você pode substituir o nome databela por uma consulta delimitada poraspas e, entáo, especificar o parâmetro queryout. Conforme o nome implica, a opçãoqueryout (saîda da consulta) só permite a exportaçáo de dados.

,(l', orcn DE ExAME\#O exame testa se você sabe qual opção de importação/exportação é a mais adequada paradeterminada situação.

Após os argumentos de BCP existe um conjunto de chaves de linha de comando quevocê pode especificar em qualquer ordem, mas a maioria dos administradores de bancode dados (DBAs) segue a convençáo de especificar chaves na mesma ordem em que elasaparecem na listagem da sintaxe geral.

As chaves -n e 4 são mutuamente exclusivas. A chave -n especifica que os dados doarquivo estáo no formato nativo do SQL Server. A chave -c especiftca que os dadosdo arquivo estáo em um formato de caractere. Se você estiver exportando dados que

Page 206: Livro_SQL

seráo importados em outra instância do SQL Server, deve usar a chave -n, pois elaoferece melhor desempenho, permitindo que o SQL Server despeje dados no formatode armazenamento interno ttiTizado pelo SQL Server nas páginas de dados. Se vocêprecisa mover o arquivo entre plataformas de banco de dados ou para outros sistemasque não sejam SQL Server, deve usar a chave 4, que converte os dados do formato dearmazenamento nativo do SQL Server para um formato baseado em caractere padráo.A chave especificada na importaçáo de dados de um arquivo é estipulada pelo formatodo arquivo recebido, pois o BCP náo pode converter dados entre formatos de armaze-namento durante uma importação.

Quando você executa comandos T-SQL (Transact-SQl), não precisa especificar o contex-to da instância ou do banco de dados, pois as propriedades de conexão jéLtêm a informa-

çáo de conexão encapsulada. Como o BCP é um aplicativo, náo tem nenhum contexto debanco de dados ou instância. Portanto, você precisa especificar a informação de conexáoa ser usada. A chave -5 especiflca o nome da instância a ser conectada. Você pode lazerlogin em uma instância usando credenciais do SQL Server ou do Microsoft Windows.A chave -Tindica uma conexáo confiável e o BCP usa as credenciais do Windows daconta que está executando o comando BCP para estabelecer a conexão. Você pode usarum login do SQL Server especificando as chaves -U e-P. -U especifr,ca o nome de logine -P especifica a senha a ser usada.

Capítulo7 I lmportandoe ExportandoDados

NOTA lmpondo constraints de verificação e triggers

Quando você importa dados para uma tabela usando BCP, as triggers e as constraints deverificação são desativados por padrão. Se quiser impor constraints de verificação e ativartriggers durante a importação, você precisará usar a chave -h. Se você não desativar tri-ggers e constraints de verificação durante uma importação, não precisará de permissõesALTER TABLE.

205

O comando BULK TNSERT

Um dos inconvenientes do utilitário BCP é que é um programa de linha de comando.O comando BULK INSERT tem muitas opções iguais ao BCP e se comporta de maneiraquase idêntica, exceto quanto às duas diferenças a seguir:

f BULK INSERT não pode exportar dados.

f BULK INSERT é, um comando T-SQL e náo precisa especificar o nome da instâncianem credenciais de login.

A sintaxe genl de BULK INSERT é:

BULK INSERT

I nome_banco_de_dados I nome_esquema ]tabela I nome_modo_visualização l

FROM ' arqui vo_dados '

I WITH( t t, I BATCHSIZE=tamanho_lotel t t, I CHECK_CONSTRAINTSI

[ [, ] CODEPAGE = {'ACP' l'OEM' I'RAt^l' I'págìna_código' } lt t, I DATAFILETYPE = {'char' I'nat'ive'l'wìdechar' |'widenat'ive'

Ìl

lnome_esquema lInome_

Page 207: Livro_SQL

206 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

[ [, ] FIELDTERMINATOR ='termjnador_campo' l [ [, ] FIRSTROW:primeir¡_ljnha l

ú1tima_1inha l[ [, ] MAXERRORS=max-erros I [ [, ] ORDER ({coluna tASC I DESCI

t ,...n I ) lt t, I ROWS_PER_BATCH=linhas_por_lotel I [, ] R0h,TERMINATOR=

'terminator_linha'lt t, I TABLOCKI t t, I ERRORFILE='nome_arquivo'l )l

O lmport and Export Wizard do SQt Server

FIRE_TRIGGERS I I [, ] FORMATFILE ='caminho_arqu'ivo_formato' lKEEPIDENT]TY] [ [, ] KEEPNULLS]KILOBYTES_PER_BATCH :quììobytes_por_lote I [ [, ] LASTROIÍ =

O BCP e o comando BULK INSERT fornecem uma maneira simples e leve para a impor-taçã.o e exportaçáo de dados por meio do uso de arquivos. Se quiser importar e exportardados diretamente entre a origem e o destino, assim como aplicar transformações e roti-nas de tratamento de erro, você pode usar os recursos do SSIS para construir pacotes.

O Import and Export Wizard do SQL Server fornece um subconjunto dos recursos doSSIS dentro do SSMS para permitir que os administradores movam dados entre umaorigem e um destino. Você acessa o assistente clicando com o botáo direito do mouseem um banco de dados dentro do Object Explorer, selecionando Tasks e, em seguida,selecionando Import Data ou Export Data.

Embora o BCP e BULK INSERT utilizem arquivos, o Import and Export Wizard pode usarqualquer fonte de dados que seja reconhecida pelo SSIS, como arquivos do Microsoft offi-ce Excel, do Microsoft Office Access ou XML (Extensible Markup Language). Além disso, oImport and Export Wizard suporta qualquer origem ou destino de dados para o qual vocêtenha um provedor de OLE DB (Object Linking and Embedding Database). O BCP e BULKINSERT exigem que uma instância do SQL Server seja a origem ou o destino dos dados,mas o Import and Export Wizardnáo exige isso. Por fim, o Import and Export Wizardpodemover dados de várias tabelas ou arquivos em uma única operaçáo, enquanto o BCP e

BULK INSERZsó podem operar em uma única tabela, view ou consulta.

MAIS INFORMAçöES Serviços de integração (lntegration Services)

Os recursos completos dos pacotes SSIS estão fora dos objetivos deste livro. Para uma visãogeral dos recursos do SSIS, consulte o livro Microsoft SQL Server 2008 Step by Sfep, de MikeHotek (Microsoft Press, 2008).

t'teste rápido

Quais são os formatos de dados suportados pelo BCP e as chaves de linha de

comando de cada formaío?

Qual parâmetro você especifica para exportar dados usando uma consulta?

O hport and Export Wizard é baseado em qual recurso do SQL Server?

Quais origens e destinos o Import and Export Wizard é capaz de usar?

2.

3.

4.

Page 208: Livro_SQL

Respostas

1. O BCP pode trabalhar com dados em formato de caraclerc ou nativo. A chave

-c indica o modo de caÍacterc, enquanto a chave -n éusadapara o modo na-tivo.

2. O parãmetro queLyout é usado para exportar o conjunto de resultados de umaconsulta.

3. O Import and Export Wtzard usa um subconjunto do recurso SSIS.

4. Yocê pode definir qualquer origem ou destino para o qual tenha um provedorde OLE DB.

Capítulo7 I lmportandoeExportandoDados

PRÁncA Exportando dados

Nos exercícios a seguir, você vai exportar o conteúdo da tabela HumanResources.Department para arquivos nativos e baseados em caractete. Você também vai usaro Import and Export Wizard para exportar o conteúdo inteiro do banco de dadosAdventureWorþ.s.

Neste exercício, você vai exportar o conteúdo da tabeTa HumanResources.Department.

1. Abra uma janela de prompt de comando e execute o comando a seguir:

bcp Adventureùrlorks.HumanResources.Department out c:\test\department.txt-c -S<nome da instânc'ia> -T

2. Abra o arquivo gerado no Bloco de Notas e inspecione os resultados.

5. Execute o comando a seguir apartir do prompt de comando:

bcp Adventureldorks.HumanResources.Department out c:\test\department.bcp-n -S<nome da instância> -T

4. Abra o arquivo gerado no Bloco de Notas e inspecione os resultados.

207

Neste exercício, você vai exportar os dados do banco de dadosAdventurelilorks panumnovo banco de dados, chamado Adver¿tureltVorks Tes t.

1. No SSMS, execute o comando a seguir apaftir de uma janela de consulta:

CREATE DATABASE Adventu relrforksTest

2. No Objecr Explorer, clique com o botáo direito do mouse no banco de dados Adven-turelllorþs, selecione Tasks e, em seguida, selecione Export Data.

3. Clique em Avançar quando apâgina Welcome To SQL Server Import And ExportWizard aparecer.

4. Especifrque o banco de dados Adventurell/orþ.s como origem, como mostrado aqui,e clique em Avançar.

Page 209: Livro_SQL

Kit de Treinamento MCTS (Êxame70-432): Microsoft SQL Server 2008

5' Especifique o banco de dados AdventureWorlesTest como destino, como mostradoaqui, e clique em Avançar.

Page 210: Livro_SQL

Capítulo7 r lmportandoeExportandoDados

6.

7.

Selecione Copy Data From One Or More Tables Or Views e clique em Avançar.

selecione todas as tabelas do banco de dados Adventureworks, como mostrado aqui.

8. Na lista Source, selecione o banco de dados AWBuíldVersíon,e clique em Edit Mappings.

como mostrado aqui,

Page 211: Livro_SQL

2to Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

9. Inspecione as opções que estáo disponíveis à medida que os dados sáo movidos da

origem para o destino. Clique em Cancelar e, em seguida, clique emAvançar.

Quando o SOL Server move dados usando o SSIS, ele transforma o tipos de dados

para tipos de dados .NEl pois o SSIS é baseado em C#.NET C#.NET não tem umtipo de dados equivalente para os tipos de dados hierárquicos, geográficos (geogra-phy) ou geométricos (geometry). Portanto, se precisar trabalhat com esses três tipos

de dados, você náo poderâ usar o Import and Export Wtzard nem o SSIS. Se um ou

mais desses tipos de dados estiver presente, você verá a mensagem de erro mostra-

da aqui. Clique em Voltar.

10.

11. Desmarque as caixas de seleçáo das tabelas [HumanResources].[Employee], [Per-sonl.fAddress], lProduction].[Document] e [Production].fProductDocument] e clique

em Avançar.

Verifique se a caixa de seleção Run Immediately está marcada, como mostrado aqui,

e clique em Avançar.

Examine as ações a serem executadas, como mostrado aqui. Quando todas as ações

tiverem sido executadas, clique em Concluir.

12.

73.

Page 212: Livro_SQL

Save and Run Packagelndicate wherher to s¿ve iËe ssts pêckdse.

; j{t*

17 Eun ¡mffidiately

l*,5ave55l5Packagd : ::::ËtçLsrrer..' ,, , ' ,.,l ti. ," ::' ,,,1 , .'

:¡:11.Èjteilsten. :::,:.' , ''.'.,:- r::.'., r ., . . ,-ì,l:.i::,:;,1:,

'Package þroleclion level :

I t ncrypt seßj¡ire ddrð w*', i*"r Gffi

P¿s*ord: : : i

Capítulo7 r lmportandoeExportandoDados

qdrpJpÈs@rd;1,,'...:.,,:,;:..:. :ì:i:':'t;,":i:: :t'till:rl :::i'::.: ìl:::::ì::r,:ì:t.:::.:i.::.:-i i:rr,,,:i: .:-,li¡:t ':,:lÍ.iì;:::.,¡ì,..::ri

r.: il.'-,i::l ri!:i.::..,,:r:;:.,¡,,1,-....,-.,,- :. l, - :"-.. l:,i;..ì'.::,.,t:'¡::

:TqÞ r,

Page 213: Livro_SQL

2L2

Resumo da lição

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

r O BCp é um utilitário de linha de comando leve que permite importar e exportardados.

r O utilitário BCP não é projetado para fornecer transformação de dados nem rotinas

de tratamento de erro.

r Além de exportar o conteúdo inteiro de uma tabela ou vieq você pode exportar os

resultados de uma consulta usando o argumento quetyout do utilitário BCP

a BULK INSERT é um comando T-SQL que você pode usar somente pata impottardados.

¡ O Import and Export \l{tzard, baseado em um subconjunto do SSIS, permite mover

dados diretamente entre uma origem e um destino sem exigir o uso de um arquivo.

Revisão da lição

Responda as perguntas a seguir patatestar seu conhecimento sobre a Liçáo 1. As per-

guntas também estão disponíveis no CD do livro (em inglês) se você preferir revisá-las

em formato eletrônico.

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" no

final do livro.

1. Você quer importar dados para atabeTa Orders. Atabela tem triggers e constraints

deverificaçáo quevocê deseja alivarparugaranlir a integridade. Você opta porusar

o utilitário BCP e especifica a dica -h "CHECK_CONSTRAINTS, FIRE_TRIGGERS"

para executar atarefa. Qual das seguintes permissões deve estar emvigor?

A. Permissão SELECTna tabela Orders

B. ALTER TABLE natabela Orders

C. Permissão INSERT na tabela Orders

D. Um membro do role bulkadmin

Você está realizando uma migração do Oracle para SQL Server no banco de dados Order

da Contoso. O banco de dados Order conlém centenas de tabelas. A tabela CustomerA-

ddress tem uma coluna XML chamada AddressBook. Qual é a maneira mais eficiente e

menos invasiva de mover os dados para o novo banco de dados do SQL Server?

A. Mover o banco de dados Order do Oracle para o SQL Server usando uma repli-

caçâo.

B. Descarregar os dados usando utilitários do Oracle e canegâ-los no SQL Server

usando BCP

C. Mover o banco de dados Order usando o Import and Export Wtzard.

D. Mover os dados do Oracle para o SQL Server usando a funçáo OPENROWSET.

2.

Page 214: Livro_SQL

Revisão do capítuloParareforçar o que aprendeu neste capítulo, você pode:

r Ler o resumo do capítulo.

I Completar o cenário de caso. Esse cenário aborda situações reais que envolvem ostópicos deste capítulo e solicita que você crie uma solução.

r Compietar as práticas sugeridas.

a Fazer um teste.

Resumo do capítulor O BCP é um programa que permite importar dados de um arquivo para uma tabela,

assim como exportar dados de uma tabela paraum arquivo.

a BULK INSERT é um comando T-SQL que permite importar dados de um arquivopara uma tabela.

r O Import and Export ''lñzard usa um subconjunto do recurso SSIS conflgurado paramover dados entre uma origem e um destino.

Termos-chave

Você sabe o que estes termos-chave significam? Conffta suas respostas consultando oglossário no final do livro.

r BCP (Bulk Copy Program)

f BULKINSERT

Cenário de caso

No cenário de caso a seguir, você vai aplicar o que aprendeu neste capítulo. As respostasdessas questões podem ser encontradas na seção "Respostas", no final deste livro.

Cenário de caso: Projetando uma estratégia deimportação para a Coho Vineyard

Histórico

Visão geral da empresa

A Coho Vineyard foi fundada em 1947 como uma vinícola regional dirigida por umafamília. craças aos vinhos premiados que tem produzido nas últimas décadas, a CohoVineyard teve crescimento significativo. Para continuar expandindo, vârias vinícolasforam adquiridas com o passar dos anos. Atualmente, a empresa possui 16 vinícolas;9 estão em Washington, oregon e Califórnia, e as 7 restantes estão localizadas em Wis-consin e Michigan, todas nos EUA. As vinícolas empregam 532 pessoas,762 das quais

I Examinar a lista de termos-chave introduzidos neste capítulo.

Capítulo7 r lmportandoeExportandoDados 213

Page 215: Livro_SQL

2l4 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

trabalham no escritório central, que abriga servidores fundamentais para o negócio. Aempresa tem 122 vendedores que viajam pelo mundo e precisam acessar a disponibili-dade de estoque atualizada.

Mudonços planejadas

Até agora, cada uma das 16 vinícolas pertencentes à Coho Vineyard tem um site sepa-

rado em suas instalações. A Coho Vineyard quer consolidar a presença na Web dessas

vinícolas para que os visitantes dos sites possam comprar produtos de todas as 1ó

vinícolas aparlir de uma única loja online. Todos os dados associados a esse site serão

armazenados em bancos de dados no escritório central.

Quando os dados forem consolidados no escritório central, será usada replicaçáo por

mesclagem (merge) para Íornecer dados para os vendedores, assim como para permitirque eles insiram pedidos. Para satisfazer as necessidades dos vendedores até que o pro-jeto de consolidação esteja concluído, dados de estoque de cada vinícola são enviadospara o escritório central ao final de cada dia.

Ambiente de dados existente

Boncos de dados

Atualmente, cada vinícola mantém seu próprio banco de dados para armazeîar todas as

informações empresariais. Ao final de cada mês, essas informações sáo lrazidas pan o

escritório central e transferidas para os bancos de dados mostrados naTabela 7-7.

Tabela 7-1 Bancos de dados da Coho Vineyard

Customer

Accounting

HR

lnventory

Promotions

Depois que o projeto de consolidaçáo do banco de dados estiver concluído, um novobanco de dados, chamado Order, sewirâ como data warehouse para a nova loja da Web.

Como parte de seu trabalho diârio, os funcionários também se conectarão periodicamen-

te no banco de dados Order, usando um novo aplicativo Web interno.

O banco de dados HR contém dados sigilosos e é protegido com TDE (TransparentDalaEncryption). Älém disso, os dados databela Salary são criptografados usando um cer-

tificado.

Servidores de banco de dados

Um único servidor, chamado DB1, contém todos os bancos de dados no escritóriocentral. DB1 está executando SQL Server 2008 Enterprise no Windows Server 2003Enterprise.

1-80 megabytes (MB)

5OO MB

1OO MB

250 MB

80 MB

Page 216: Livro_SQL

Requisitos empresariaisVocê precisa projetar uma solução de arquivamento para os bancos de dados Customere Order. Sua estratégia de arquivamento deve permitir que os dados de Customer sejamguardados por seis anos.

Palapreparar o banco de dados order para os procedimentos de arquivamento, você criauma tabela particionada chamada order.Sales. order.Sales inclui duas partições. Apar-tição 1 inclui atividade de vendas do mês corrente. A partição 2 éusadapara armazenaÍatividade de vendas do mês anterior. Os pedidos feitos antes do mês anterior devem sermovidos para outratabela particionada, chamada Order.Archive. A partiçáo 1 de Order.

Archive inclui todos os dados arquivados. A partição 2 permanecevazia.

Um processo precisa ser criado para carcegar os dados de estoque de cadauma das 16

vinícolas, diariamente, às 4h00min.

Quatro grandes clientes enviam pedidos usando o esquema XML (Extensible Markup Lan-guage) da Coho Vineyard para transações EDI (Electronic Data Interchange). Os arquivosEDI chegam às 17h00min e precisam ser analisados e carregados nos bancos de dadosCustomer, Accountíng e Inventory, cada um dos quais contém tabelas relevantes parafazer um pedido. Atualmente, a rotina de importação EDI é um aplicativo em C* * de umthread que leva entre três e seis horas para processar os arquivos. Você precisa concluiro processo EDI às 1.7h30min para satisfazer o acordo de atendimento SLA (Service LevelAgreement) fechado com os clientes. Depois que o projeto de consolidaçáo tiver termina-do, a rotina EDI carregará todos os dados no novo banco de dados Order.

Você precisa fazer o backup de todos os bancos de dados em todos os locais. No ce-

nârío de pior caso, você pode perder no máximo cinco minutos de dados. Os bancosde dados Customer, Account, Inventory, Promotíons e Order podem ficar fora do ar nomáximo por 20 minutos, no caso de um desastre. Os dados com mais de seis mesesnos bancos de dados Customer e Order podem ftcar fora do ar por até 1.2 horas no casode um desastre.

Responda as perguntas a seguir:

1. Qual método deve ser usado para mover os dados de cadavinícola para o banco de

dados central?

2. Qual método proporcionaria a maneira mais flexível detratar de todos os enviosEDI?

Capítulo7 r lmportandoeExportandoDados 215

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

lmportando e exportando dadosI Exercício 1 Use o BCP no modo de caraclere para exportar o conteúdo de uma

tabelapara um arquivo.

Page 217: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

I Exercício 2 Use BULK INSERT para importar o conteúdo do arquivo gerado noExercício 1. para uma tabela.

r Exercício 3 Conheça o SSIS. A plataforma SSIS tem recursos para executar qual-quer processo de importaçãolexportação ou manipulaçáo de dados que você precisepara seu ambiente.

Faça um testeOs testes do CD deste livro (em inglês) oferecem muitas opções. Você pode fazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-ficaçáo 70-432. É possível configurar o teste para que ele simule a experiência de fazerum exame de certificação ou configurá,-lo no modo de estudo (study mode) para ver as

respostas corretas e explicações depois de cada questáo.

MAts tNFoRMAçöEs Testes

Para mais detalhes sobre todas as opçöes de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

Page 218: Livro_SQL

Antes do Microsoft SQL Server 2008, você reaTízava o gerenciamento de configuraçãode um ambiente usando uma conglomeraçáo de documentos, scripts e verificações ma-nuais. As opções de configuração, convenções de atribuiçáo de nomes e conjunto de re-cursos permitidos eram descritos em um ou mais documentos. Para impor seus padrões,você tinha que se conectar em cada instância e execular scripts que precisavam sermantidos e atualizados com novas versões e pacotes de serviço. Neste capítulo, você vaiaprender sobre a estrutura de Gerenciamento baseado em Diretiva (Policy Based Mana-gement), que permite verificar e impor a conformidade de diretiva em sua infraestruturade SQL Server inteira.

Objetivos de exame neste capítulo:

t Implementar a estrutura de gerenciamento declaraliva (DMF - Declarative Manage-ment Frame\Mork).

r Configurar ârea de superficie.

Lição deste capítulo:

I Liçáo 1: Projetando diretivas 279

Antes de começarParu lazer a lição deste capítulo, você deve ter:

r o SQL Server 2008 instalado

r o banco de dadosAdventureWorþs instalado dentro da instância

@ trnoo real

Míchael Hotele

Gerenciar um único servidor com SQL Server ou mesmo um pequeno grupo deles,um por vez, sempre foi razoavelmente simples. Contudo, quando você precisavagerenciar uniformemente um ambiente SQL Server inteiro ou um grande grupo deinstâncias, tinha que escrever uma grande quantidade de código personalizado ouadquirir mais produtos.

Page 219: Livro_SQL

218 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Um cliente com quem trabalhei tinha um ambiente com mais de 5.000 instânciasdo SQL Server. Antes do lançamento do SQL Server 2008, eram necessários doisDBAs para gerenciar as quase 50.000 linhas de código que verificavam se as ins-tâncias estavam em conformidade com os planos corporativos. Eles dedicavammais de 70 horas a cada semana para maîter o código e verificar os sistemas.

Depois de implantar o SQL Server 2008, eles começaram a converter todo o código

em diretivas. Depois que a conversáo estava terminada, estimaram que permanece-

ram menos de 1.000linhas de lógica personalizada. Usando os recursos de geren-

ciamento centrais paraverifr.car e impor diretivas no ambiente, eles deverão econo-

mizar mais de 3.000 horas de tempo de gerenciamento e manutençáo por ano.

Page 220: Livro_SQL

Lição 1: Projetando diretivasO SQL Server 2008 tem um novo recurso, chamado Poliry Based Management, tambémconhecido como estrutura de gerenciamento declarativa (DMF), para enfrentar o proble-ma de padronizaçã,o de instâncias do SQL Server. Embora o Poliry Based Managementpossa ser usado apenas para aTertar um adminisûador quando um objeto não estiverem conformidade, dependendo do tipo de diretiva, você também pode impor a conformi-dade evitando alterações que violariam uma diretiva.

O Policy Based Management introduz os seguintes objetos novos, que são usados paraprojetar e verificar a conformidade:

Capítulo 8 r Projetando Gerenciamento Baseado em Diretivas

T

IT

T

I

Facetas

Condições

Diretivas

Alvos de diretiva

Categorias de diretiva

Após esta lição, você será capaz de:

I Criar condições

I Definir diretivas

I Especificar alvos para verificação de diretiva

I Configurar categorias de diretiva

I Verificar a conformidade com a diretivas

I lmportar e exportar diretivas

Tempo estimado para a lição: 30 minutos

2t9

FacetasAsjfacetûs são o objeto básico sobre o qual os padrões são estabelecidos. As Íacetasdefinem o tipo de objeto ou opçáo a serverificada, como o banco de dados, aâreadesuperfície e o login. O SQL Server rem74 faceías, implementadas como assemblies .NETcada uma com um conjunto exclusivo de propriedades.

Todos os objetos do Policy Based Management sã"o armazenados dentro do banco de da-dos msdb. Você pode obter uma lista das facetas disponíveis consultando a tabela dbo.syspolicy_management_facets. Infelizmente, a menos que você queira escrever códigopara intengir com SMOs (Server Management Objects), a(tnica maneira de obter umalista de propriedades de facela é abrindo cada Íaceta no SQL Server Management Studio(SSMS), uma por vez, e vendo a lista de propriedades.

Page 221: Livro_SQL

220

CondiçöesQuando você define uma cláusula \MHERE para uma instrução DML (linguagem de ma-

nipulação de dados), estabelece uma condição paru a instrução que define o conjunto de

linhas que satisfazem seus critérios de inclusão específicos. Dentro da estrutura Policy

Based Management, as condições são equivalentes a uma cláusula WHERE que define

os critérios que precisam ser verificados.

Você define as condições que deseja verificar ou impor para uma diretiva, estabelecen-

do critérios para as propriedades de uma faceta. Assim como uma cláusula WHERE,

uma condição pode ser definida por uma ou mais propriedades de faceta, e vários cri-térios podem ser verificados para uma única propriedade de facela. Os operadores de

comparação que podem ser usados sáo restritos pelo tipo de dados da propriedade. Por

exemplo, uma propriedade de tipo stríng pode ser verificada com :, <>, LIKE, NOTLIKE, IN ou NOT IN, enquanto um tipo booleano só pode ser verificado com : e < >'

Se uma condiçáo que você deseja verificar para uma faceta náo tem uma propriedade

especÍfica que possa ser usada, é possível usar o editor avançado para definir condições

complexas que comparam várias propriedades e incorporam funções. Por exemplo, você

pode verificar se todas as tabelas têm uma chave primária e se uma tabela com um úni-co índice deve ser agrupada.Infelizmente, se você definir uma condiçáo usando o editoravançado, uma diretiva que incorpore a condição deverâ ser executada manualmente e

não poderá ser programada.

As condições são verificadas em um único passo. Você não pode lazer uma condição

extrair uma lista de objetos, iterar na lista de objetos e, em seguida, aplicar verifica-

ções subsequentes. Para funcionar dentro da estrutura Policy Based Management, as

condições precisam retornar um valor True ou False. Portanto, ao construir condições

complexas com o editor avançado, você não pode retornar uma lista de objetos que náo

satisfaçam seus critérios. Você precisa definir a condição de modo que, se um objeto não

atender seus critérios, seja retornado o valor False.

Embora você possa verificar muitas propriedades de uma lacela denlro de uma únicacondiçáo, uma condiçáo única náo pode ser definida paravirias facetas. Por exemplo,

você pode verificar todas as 10 propriedades da faceta Surface Area Configuration em

uma única condição, mas precisa definir uma segunda condiçáo para verificar uma pro-

priedade de Surface Area Configuralion para Analysis Services.

Alvo de diretivaAs condições sáo a base das diretivas. Contudo, nem sempre você quer verificar direti-vas em cada objeto disponível, como em cadabanco de dados de uma instância ou em

cada índice dentro de cada banco de dados. As condições também podem ser usadaspara especificar os objetos em que a condição vai ser comparada, o que é chamado de

alvo de díretíva ou conjuntos de objetivo.

Você pode ter como objetivo uma diretiva em nível de servidor, como as instâncias que

são SQL Server 2OO5 ou SQL Server 2008. Você também pode ter como objetivo uma di-retiva em nível de banco de dados, como todos os bancos de dados de usuário ou todos

os bancos de dados de sistema.

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Page 222: Livro_SQL

DiretivasAs diretivas são criadas para uma única condiçáo e configuradas pan impor ou verifi-car a conformidade. O modo de execuçáo pode ser configurado como segue:

I On demand Avalia a diretiva quando executada diretamente por um usuário

I On change, prevent Cria triggers DDL (linguagem de definiçáo de dados) paraimpedir uma alteraçáo que viole a diretiva

I On change, log only Verifica a diretiva automaticamente quando é feita umaalteraçáo usando a infraestrutura de notificação de evento

r On schedule Cria uma larcfa do SQL Server Agentpara verificar a diretiva em umhorário definido

Se uma diretiva contém uma condiçáo que foi definida usando-se o editor avançado, oúnico modo de execução disponível é On Demand.

Para usar os modos de execuçáo On change, prevent e On change, log only, a diretivadeve ter como objetivo instâncias com SQL Server 2005 e acima. O modo de execuçãoOn change, log onþ utiliza a infraestrutura de notificaçáo de evento que está dispo-nível somente para o SQL Server 2005 e posteriores. O modo de execuçáo On change,prevent depende de triggers DDL para evitar uma alteraçã,o que não esteja em confor-midade com a diretiva e estáo disponíveis somente para o SQL Server 2OO5 e posterio-res. Além disso, você só pode configurar uma diretiva como On change, prevent se forpossível que uma trigger DDL impeça a alteraçáo. Por exemplo, você poderia impedir acriação de um objeto que violasse suas convenções de atribuição de nomes, mas nãopoderia impor uma diretiva dizendo que todos os bancos de dados precisam estar nomodelo de recuperaçáo Completo, pois o comando ALTER DATABASE é executado forado contexto de uma transaçáo.

Capítulo I r Projetando Gerenciamento Baseado em Diretivas 22L

Categorias de diretivaCategorías de díretíva podem ser usadas para agnJpar uma ou mais diretivas em umaunidade de conformidade. Se elas náo são especificadas, todas as diretivas pertencem àcafegoria DEFAULT. Parc veñficar ou impor diretivas, você cria uma inscrição em umaou mais diretivas.

A inscrição ocorre em dois níveis - instância e banco de dados. Um membro do rolesysadmin pode inscrever uma instância em uma categoria de diretivas. tJmavez inscri-ta, o proprietâfio de cadabanco de dados dentro da instância pode inscrever seu bancode dados em uma categoúa de diretiva.

Cada categoria de diretiva tem uma propriedade Mandate que se aplica aos bancos dedados. Quando uma categoria de diretiva é configurada como Mandate e nm sysadmininscreve a instância em uma cafegoia de diretiva, todos os bancos de dados que sa-Íisfazem o objetivo configurado são controlados pelas diretivas dentro da categoría dediretiva. A inscrição de uma diretiva em uma cafegoña configurada como Mcndate náopode ser anulada pelo proprietfuio de um banco de dados.

Page 223: Livro_SQL

Conformidade com a diretiva

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Como você não pode configurar todas as diretivas para impor a conformidade, precisaconstantemente verificar manualmente as diretivas que não podem ser impostas. Você vêas diretivas aplicadas a uma instância clicando com o botão direito do mouse no nomeda instância dentro do Object Explorer e selecionando Policies, View. Você pode verificaras diretivas que se aplicam a uma instância clicando com o botão direito do mouse nonome da instância dentro do object Explorer e selecionando Policies, Evaluate.

Você pode verificar todas as diretivas dentro de uma instância, como mostrado na Figu-ra 8-1., clicando com o botão direito do mouse no nó Policies e selecionando Evaluate.

Figura 8-1 Diretivas de avaliação.

Clicando em Evaluate, você executa as diretivas e examina os resultados, como mostra-do na Figura B-2.

ô orca DE ExAME'wA definição de uma condição a ser usada como objetivo de diretiva é um componente funda-mental das diretivas bem definidas. Uma diretiva falha durante uma verificação se o objeto nãoobedece aos critérios e se a propriedade não existe. Por exemplo, tentar verificar se o Web Assis-

tant está desativado em uma instância do SQL Server 2008 falha, pois o recurso não existe.

Central Management ServerO Poliry Based Management estaria limitado ao SQL Server 2008 e seria muito maçante,se você tivesse que fazer o seguinte:

¡ Duplicar diretivas em cada instância

r Criar inscrições para cada instância individualmente em seu ambiente

r Verificar a conformidade individualmente para cada instância

Page 224: Livro_SQL

Capítulo I I Projetando Gerenciamento Baseado em Diretivas

Figura 8-2 Resultados da verificação de diretivas.

Dentro do painel Registered Servers no SSMS, você pode configurar um Central Manage-ment Server (servidor de gerenciamento central). Sob o Central Management Server, vocêpode criar vários níveis de pastas e registrar instâncias na pasta apropriada. Depois deter a estrutura Central Management Server configurada no SSMS, você pode avaliar dire-tivas em uma instância específica em uma pasta ou em todas as instâncias sob o CentralManagement Server. A Figura 8-3 mostra um exemplo de Central Management Server.

223

H ld uevdopmenl

$ norexz\msrnrucrz

El HorEKz\ÍisTANcE3

81 sQtDevol

bl selDev0?Ê k LoðdTe5t

E selloèdTe5t0tH B Product¡on

þ ,qsið

lã EUroDe

l-{ Philrppnes

8l unitedstètsEÈaA

ñ selenor

Figura 8-3 Central Management Server.

lmportação e exportação das diretivasAs diretivas e as condições podem ser exportadas pan arquivos, assim como importa-das de arquivos. O SQL Server tem 53 diretivas que estão localizadas na pasta MicrosoftSQL Server\100\Tools\Policies. Existem 50 diretivas para o mecanismo de banco de da-

Page 225: Livro_SQL

224 Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

dos, dois para Reporting services e uma diretiva para Analysis Services. o site codeplex(http://wvvw.codeplex.com) tem mais diretivas què você poáe baixar e importar.Você pode importar diretivas dentro do painei Registered Servers ou do object Explorer.Dentro do object Explorer, você pode clicar com obotáo direito do mouse no nó policiessob Policy Management e selecionar Import Poliry. Dentro de Registered Servers, vocêpode clicar com o botão direito do mouse no Central Managemeñt Server ou em qual-quer pasta ou instância sob o Central Management Server e selecionar Import policies.se você importar diretivas do Central Management Server, elas serão importadas paracada insiância definida sob o central Management server, mas não para ele próprio. lomesmo modo, clicar com obotã,o direito do mouse em uma pasta importa as diretivaspara iodas as instâncias dentro da hierarquia de pastas. yarã importar diretivas para oCentral Management Server, você deve se conectar na instância dèntro do object Ëxplo-rer e importar a paftir do nó policies.

*f t"rt" rápido1. Quais são os cinco objetos utilizados dentro do poliry Based Management?2. Quais são os modos de execução permitidos palauma diretiva?3. Que objeto tem uma propriedade que permite impor a verificação de todos os

bancos de dados em uma instância?

4. Qvantas facetas podem ser verificadas dentro de uma única condição?5. Quantas condições podem ser verificadas dentro de uma única diretiva?

Respostas

1. os objetos utilizados com o policy Based Management são: facetas, condições,diretivas, objetivos de diretiva e categorias de ãiretiva.

2. os modos de execuçáo de diretiva sáo: on demand, on schedule, on change,Log only e On change, prevent.

5. As categorias de diretiva permitem impor a verificação de todos os bancos dedados dentro de uma instância.

4. Uma condição pode ser definida em apenas umafaceta.5. Uma diretiva só pode verificar uma única condição.

PRÁTrcA Definindo diretivas e ver¡f¡cando a conformidadeNos exercícios a seguir, você vai defïnir e verificar vârias diretivas para seu ambiente.

Neste exercício, você vai criar uma condiçã o para o seguinte:

I Verificar se um banco de dados não está com as propriedades auto shnnþ ou Gutoclose configuradas.

a verifr,car se cLR, oLE Automation, Ad Hoc Remote eueries e SQL Mail estáo todosdesativados.

Page 226: Livro_SQL

r Veriflcar se um banco de dados não eslâ no modelo de recuperaçáo Simpies.

I Verificar se todas as tabelas têm uma chave primária.

1. No Object Explorer, expanda o nó Poiicy Management dentro do nó Management.

2. Clique com o botão direito do mouse no nó Conditions e selecione New Condition.

3. Configure a condição conforme mostrado aqui. Clique em OK quando tiver terminado.

Capítulo 8 r Projetando Gerenciamento Baseado em Diretivas

4. Clique com o botão direito do mouse no nó Conditions novamente, selecione NewCondition e confrgure a condiçáo conforme mostrado aqui. Clique em OK.

225

Page 227: Livro_SQL

226 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

5. clique com o botão direito do mouse no nó conditions, selecione New condition e

configure essa terceira condiçáo conforme mostrado aqui. clique em oK quandotiver terminado.

6. Clique com o botáo direito do mouse no nó Conditions e selecione New Condition.Selecione afacetaTable, clique no botão de reticências ao lado da coluna Field paraexibir a caixa de diálogo Advanced Edit, digite o código a seguir na caixa de textoCell Value e clique em OK:

IsNu'll(ExecuteSql('Numeric', 'SELECT t FROM sys.tab'les a INNER JOINsys,indexes b

ON a.object_id = b.object_id I'/HERE b.is_pr.irnary_key = 1

AND a.name = @@ObjectName AND a.schema_id = SCHEMA_ID(@@SchenaNane)'), 0)

7. conrrgure Name, operator e value conforme mostrado aqui e, em seguida, cliqueem OK.

Page 228: Livro_SQL

Neste exercício, você vai criar uma condiçáo paÍa ter como objetivo todas as instânciasdo SQL Server 2OO5 e posteriores, junto com uma condição para ter como objetivo todosos bancos de dados de usuário que estáo online.

1. Clique com o botão direito do mouse no nó Conditions, selecione New Condition e

configure a condição conforme mostrado aqui. Clique em OK.

Capítulo 8 I Projetando Gerenciamento Baseado em Diretivas

2.

227

Clique com o botão direito do mouse no nó Conditions, selecione New Conditione configure a condição conforme mostrado aqui. Clique em OK quando tiver leÍ-minado.

Page 229: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Neste exercício, você vai criæ diretivas que ulilizam as condições que acabou de elabo-rãÍ paÍa:.

r Verificar se um banco de dados náo esíâ com as propriedades auto shrínþ. ou a,utoclose configxadas.

I Verificar se CLR, OLE Automation, Ad Hoc Remote Queries e SQL Mail estão todosdesativados.

r Verificar se um banco de dados náo está no modelo de recuperaçáo Simples.

r Verificar se todas as tabelas têm uma chave primária.

1. Clique com o botáo direito do mouse no nó Policies, selecione New Policy e configu-re a diretiva conforme mostrado aqui. Clique em OK.

Page 230: Livro_SQL

2. Clique com o botão direito do mouse no nó Policies, selecione New Policy e configu-re essa segunda diretiva conforme mostrado aqui. Clique em OK.

Capítulo I r Projetando Gerenciamento Baseado em Diretivas

3. Clique com o botão direito do mouse no nó Policies, selecione New Policy e configu-re a diretiva conforme mostrado aqui. Clique em OK.

229

Page 231: Livro_SQL

230 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

4. Clique com o botão direito dore a última diretiva conforme

mouse no nó Policies, selecione New Policy e configu-mostrado aqui. Clique em OK.

Neste exercício, você vai criar duas categorias de diretivas paÍa as diretivas que iâelaborou.

1. Clique com o botão direito do mouse em Policy Management, selecione ManageCategories e crie as categorias conforme mostrado aqui. Clique em OK.

Page 232: Livro_SQL

2. No SSMS, naâwore de console, expanda a pasta Policies. Clique com obotáo direitodo mouse em Check For Auto Shrink And Auto Close Policy, selecione Properties,clique na guia Description e altere a categoria paraDalabase Best Practices. Cliqueem OK.

Clique com o botão direito do mouse em Check For Simple Recovery Model Policy,seiecione Properties, selecione agaia Description e altere acategoria para DatabaseBest Practices. Clique em OK.

Clique com o botão direito do mouse em Check For Surface Area Configuration Po-

licy, selecione Properties, clique na guia Description e altere acategoria para Instan-ce Surface Area Best Practices. Clique em OK.

Clique com o botão direito do mouse em Check Tables For Primary Key Policy, se-lecione Properties, selecione a guia Descriplion e altere a calegoria para DatabaseBest Practices. Clique em OK.

3.

Capítulo 8 r Projetando Gerenciamento Baseado em Diretivas 23L

4.

5.

Neste exercício, você vai importar as diretivas que acompanham o SQL Server.

1. Clique com o botáo direito do mouse no nó Policies sob Policy Management e sele-cione Import Policy.

2. Clique no botáo de reticências ao lado da caixa de texto Files To Import, navegae atê,

a pasta Microsoft SQL Server\100\Tools\Policies\DatabaseEngine\1033, selecionetodos os arquivos da pasta, como mostrado aqui, e clique em Abrir.

3. Marque acaixa de seleção Replace Duplicates With Items Imported, selecione Pre-

serve Policy State On Import e clique em OK.

4. Examine as diretivas e condições que foram criadas durante a importação.

Page 233: Livro_SQL

232

Resumo da Iição

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

r Você pode construir diretivas para impor condições em qualquer versáo do SQLServer.

I As diretivas podem impor uma única condição e cada condição pode ser baseadaem uma inicafacela.

I As categorias de diretiva permitem que você agrupe diretivas para verificação deconformidade.

I Uma calegoria de diretiva pode ser conflgurada com a propriedadeMandate, a qualexige que a diretiva seja verificada em todos os bancos de dados dentro de umainstância.

Revisão da lição

Responda a pergunta a seguir paralestaÍ seu conhecimento sobre a Liçáo 1. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. Você definiu várias diretivas que deseja aplicar em todos os bancos de dados dentrode uma instância. Como você garante que o proprietârio de um banco de dados nãopossa evitar averificaçâo da direfiva com o mínimo trabalho administrativo?

A. Criar uma condiçáo que verifique todos os bancos de dados.

B. Adicionar a diretiva em uma categoria de diretiva definida pelo usuário e con-figurar a propriedade Mandate.

C. Adicionar a diretiva na categoria de diretiva padráo.

D. Verificar as diretivas manualmente na instância.

Page 234: Livro_SQL

Revisão do capítuloPara rcÍorçar o que aprendeu neste capítulo, você pode:

r Ler o resumo do capítulo.

I Completar o cenário de caso. Esse cenário aborda situações reais que envolvem ostópicos deste capítulo e solicita que você crie uma solução.

I completar as práticas sugeridas.

a Fazer um teste.

Resumo do capítulor As facetas são as assemblies .NET que definem o conjunto de propriedades de um

objeto no qual as condições são construídas.

I Uma condição pode ser definida para uma única laceta e uma diretiva pode serverifïcada para uma única instância.

r As diretivas podem serverificadas manual ou automaticamente. A verificação auto-méLlica de diretiva pode ser realizada de acordo com uma programação ou usando-se a infraestrvfuta de notificação de evento.

r O proprietfuio de um banco de dados pode inscrever um banco de dados em umaou mais diretivas; no entanto, uma diretiva pertencente a uma categoria de direti-va configurada com a propriedadeMandate exige verificação em todos os bancosde dados.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando oglossário no final do livro.

r Condição

I Faceta

I Categoria de diretiva

I Alvo de diretiva

Cenário de caso

No cenário de caso a segui¡ você vai aplicar o que aprendeu neste capítulo. As respostasdessas questões podem ser encontradas na seção "Respostas", no final deste livro.

r Examinar a lista de termos-chave introduzidos neste capítulo.

Capítulo I I Projetando Gerenciamento Baseado em Diretivas 233

Page 235: Livro_SQL

234 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Cenário de caso: Projetando uma estratégia degerenc¡amento para a Coho Vineyard

Histórico

Visão gerol da empresa

A Coho Vineyard foi fundada em 1947 como uma vinícola regional dirigida por uma fami-lia. Graças aos vinhos premiados que tem produzido nas últimas décadas, a Coho Vineyardteve crescimento significativo. Para continuar expandindo, várias vinícolas foram adqui-ridas com o passar dos anos. Atualmente, a empresa possui 16 vinícolas; 9 estão em Wa-

shington, Oregon e Caiifórnia, e as 7 restantes estáo localizadas em Wisconsin e Michigan,todas nos EUA. As vinícoias empregam 532 pessoas, 162 das quais trabalham no escritóriocentral, que abriga servidores fundamentais para o negócio. A empresa tem 722 vendedo-res que viajam pelo mundo e precisam acessar a disponibilidade de estoque atualizada.

Mudanças planejadas

Até, agora, cada uma das 16 vinícolas pertencentes à Coho Vineyard tem um site sepa-

rado em suas instalações. A Coho Vineyard quer consolidar a presença na Web dessas

vinícolas para que os visitantes dos sites possam comprar produtos de todas as 16

vinícolas apafür de uma tnicaloja online. Todos os dados associados a esse site serão

armazenados em bancos de dados no escritório central.

Quando os dados forem consolidados no escritório central, será usada replicação pormesclagem (merge) para fornecer dados para os vendedores, assim como para permifirque eles insiram pedidos. Para satisfazer as necessidades dos vendedores até. que o pro-jeto de consolidação esteja concluído, dados de estoque de cada vinícola são enviadosparao escritório central ao final decadadia.

A gerência quer garantir que você náo possa executar procedimentos armazenados(stored procedures) escritos em C#.NET nem usar o comando OPENROWSET ou OPEN-

DATASOURCE.

Ambiente de dados existente

Bancos de dodos

Atualmente, cada vinícola mantém seu próprio banco de dados para armazenar todas as

informações empresariais. Ao final de cada mês, essas informações sáo trazidas para o

escritório central e transferidas para os bancos de dados mostrados na Tabela 8-1.

Tabela 8-1 Bancos de dados da Coho Vineyard

Customer

Accounting

HR

lnventory

Promotions

1-80 megabytes (MB)

5OO MB

1OO MB

250 MB

80 MB

Page 236: Livro_SQL

Depois que o projeto de consolidação do banco de dados estiver concluído, um novobanco de dados, chamado Order, sewirâ como data warehouse para a nova loja da Web.

Como parte de seu trabalho diário, os funcionários também se conectaráo periodicamen-te no banco de dados Order usando um novo aplicativo Web interno.

O banco de dados HR contém dados sigilosos e é protegido com TDE (Transparent DataEncryption). Além disso, os dados databela Salary são criptografados usando um cer-

tificado.

Servidores de banco de dodos

Um único servidor, chamado DB 1 , contém todos os bancos de dados no escritório central.DBl está executando SQL Server 2008 Enterprise no Windows Server 2003 Enterprise.

Requisitos empresariaisVocê precisa projetar uma solução de arquivamento para os bancos de dados Customere Order. Sua estratégia de arquivamento deve permitir que os dados de Customer sejamguardados por seis anos.

Para preparar o banco de dados Order para os procedimentos de arquivamento, você criauma tabela particionada chamada Order.Sales. Order.Sales inclui duas partições. A par-

lição 7 inclui atividade de vendas do mês corrente. A partiçáo 2 é,usadapara armazenatatividade de vendas do mês anterior. Os pedidos feitos antes do mês anterior devem sermovidos para outra tabela particionada, chamada Order.Archive. A partição 1 de Order.

Archive inclui todos os dados arquivados. A partiçáo 2 permanecevazia.

Um processo precisa ser criado paracarregar os dados de estoque de cada uma das 16

vinícolas, diariamente, às 4h00min.

Suatro grandes clientes enviam pedidos usando o esquema XML (Extensible MarkupLanguage) da Coho Vineyard paratransações EDI (Electronic Data Interchange). Os ar-quivos EDI chegam às 1 7h00min e precisam ser anaiisados e carregados nos bancos de

dados Customer, Accountíng e Inventory , cada um dos quais contém tabelas relevantesparalazer um pedido. Atualmenie, arofina de importaçáo EDI é um aplicativo em C+ +de um thread que leva entre três e seis horas para processar os arquivos. Você precisaconcluir o processo EDI às 1.7h30min para satisfazer o acordo de atendimento SLA(Service Level Agreement) fechado com os clientes. Depois que o projeto de consolidaçãotiver terminado, a rotina EDI carregarâ todos os dados no novo banco de dados Order.

Você precisa fazer o backup de todos os bancos de dados, em todos os locais. Todos os

bancos de dados de produção precisam ser configurados com o modelo de recuperaçãoCompleto. No cenário de pior caso, você pode perder no máximo cinco minutos de da-dos. Os bancos de dados Customer, Account,Inventory, Promotíons e Order podem ficarfora do ar no máximo por 20 minutos, no caso de um desastre. Os dados com mais de

seis meses nos bancos de dados Customer e Order podem ficar fora do ar por até 12ho-ras no caso de um desastre.

Responda a pergunta a seguir.

r Quais diretivas você implementaria para verificar e impor os requisitos empresa-riais da Coho Vineyard?

Capítulo 8 I Projetando Gerenciamento Baseado em Diretivas 235

Page 237: Livro_SQL

236

Práticas sugeridas

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Para dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

lmplementando gerenc¡amento baseado em diretivar Exercício 1 Conflgure uma diretivaparaverificar a configuraçâo de átea de super-

ficie de todas as suas instâncias do SQL Server.

r Exercício 2 Configure uma diretiva para verificat ailtimavez em que um bancode dados teve seu backup feito com sucesso.

I Exercício 3 Configure diretivas para verificar a participaçáo como membro dosroles sysadmin e db_owner.

I Exercício 4 Configure uma diretiva para garantir que os bancos de dados nãosejam configurados como auto shrínk ou auto close.

r Exercício 5 Com base nas diretivas que acompanham o SQL Server 2008, decidaquais aplicar em seu ambiente e implemente as verificações de diretiva.

Faça um testeOs testes do CD deste livro (em inglês) oferecem muitas opções. Você pode fazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-flcaçáo 70-432. É possível configurar o teste para que ele simule a experiência de fazerum exame de certificação ou configurâ-Io no modo de estudo (study mode) para ver asrespostas corretas e explicações depois de cada questão.

MA|S TNFORMAçÕES Testes

Para mais detalhes sobre todas as opçöes de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

Page 238: Livro_SQL

Capítulo 9

Fazendo

]unto com a segurança, a oútÍa tarefa fundamenial de um administrador de banco de

dados (DBA) ê garantir que os dados possam ser recuperados no caso de um desastre.A náo ser que você possa proteger os dados, os milhares de recursos do Microsoft SQL

Server 2008 paru construir aplicativos de alto desempenho e expansíveis não podem serusados para dirigir uma empresa. Neste capítulo, você vai aprender sobre os recursos domecanismo de backup e restauração, assim como procedimentos para recuperaçâo de

vários cenários de desastre.

Objetivos de exame neste capítulo:

a Fazer o backup de um ambiente de SQL Server.

a Fazer o backup de bancos de dados.

r Restaurar bancos de dados.

I Gerenciar snapshots de banco de dados.

r Manter um banco de dados usando planos de manutenção.

Lições deste capítulo:

r Liçáo 7:Fazendobackup debancos de dados 239

r Liçáo 2: Restaurando bancos de dados 252

r Lição 3: Snapshots de banco de dados 264

Antes de começarParafazer as lições deste capítulo, você deve ter:

r o SQL Server 2008 instalado

r o banco de dadosAdventureWorþs instalado dentro da instância

Page 239: Livro_SQL

238 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

({Þ naundo real

Míchael Hotek

Há vários anos, fui chamado a uma empresa para ajudâ-\os a se recuperarem deum grande desastre que exigiu a mudança para novas instalações. Um novo es-critório e um novo centro de dados jâ estavam estabelecidos e meu trabalho eracolocar os servidores de banco de dados online com todos os bancos de dadosrecuperados.

Eu receberia um grande número de documentos e uma descriçáo detalhada dosprocedimentos de backup que estavam em vigor para os bancos de dados e para osservidores de reserva, onde cópias redundantes dos dados ficavam online no casode uma falha de um principal. Tudo parecia estar em ordem, de modo que pegueium aviáo e cheguei ao novo centro de dados algumas horas depois.

Somente depois de chegar ao novo centro de dados e começar a reunir tudo é queeu soube da mâ notícia: a documentação estava completamenfe inutiTizada. A em-presa tinha servidores de reserva que eram mantidos por 1og shipping e esses ser-vidores estavam no mesmo centro de dados que os servidores principais. Embora olato de ter os servidores de reserva no mesmo centro de dados não fosse uma solu-ção recomendada, isso criou um pequeno problema, pois o centro de dados anteriorestava debaixo de 5 metros de âgu,a. Para piorar as coisas, mesmo que tudo tivessebackup em fita, as fitas estavam guardadas em um armário... no mesmo centro dedados que estava a 5 metros debaixo d'âgaa.

Os únicos backups ulilizáxeis que tínhamos era um conjunto de fitas de cerca dedois meses antes, quando um dos novos DBAs iniciou um projeto pan gtardarfltas de backup foru da sede. O projeto não tinha vingado devido a problemasfinanceiros. Felizmente, esse novo D¡R tinha estado ocupado e se esqueceu dolato de que o primeiro passo no projeto de armazenamento fora da sede era sim-plesmente fazer com que os DBAs de plantão levassem as fitas do dia anleñorpara casa, e ele tinha se esquecido de que, dois meses antes, tinha levado paracasa um conjunto de fitas.

Ter uma estratégia de backup, servidores de reserva evâias cópias de um bancode dados são as melhores prâticas para gerenciamento de bancos de dados. Mas é

preciso ter um pouco de bom senso. Se o objetivo dos backups é protegêlo de umdesastre, você provavelmente não quer as fitas de backup guardadas em nenhumlugar próximo das máquinas principais que poderiam enfrentar um desastre.

Page 240: Livro_SQL

Lição 1: Fazendo backup de bancos de dadosos backups de banco de dados formam a espinha dorsal sobre a qual todo plano de re-cuperaçáo de desastre é construído. As estratégias de backup são projetadas na ordemoposta do material apresentado neste capítulo. Você começa com os requisitos e procedi-mentos de recuperaçáo e depois descobre quais tipos de backups atendem melhor suasnecessidades de recuperação. A não ser que você esteja desenvolvendo estratégias de

backup voltadas à recuperação, é improvável que satisfaça seus requisitos de recupe-ração de desastre. Contudo, é muito dificil ensinar rccuperaçãto de dados sem primeiroter os backups; portanto, nesta lição você aptenderâ sobre os vários tipos de backup ea criar backups para suportar seus bancos de dados, antes de aprender a respeito de

recuperação de bancos de dados.

Capítulo 9 I Fazendo Backup e Restaurando um Banco de Dados

Após esta lição, você será capaz de:I Criar backups completos, diferenciais e de log de transação

I Criar planos de manutenção

Tempo estimado para a lição:20 minutos

Segurança do backup

Todos os backups são executados sob o contexto de segurançadaconta de ser-viço do SQL Server. Embora seja possível conceder acesso de Ieituralgravaçãono diretório de backup diretamente paraa conta de serviço do SQL Server, vocêdeve, em vez disso, conceder acesso deleituralgravaçáo para o grupo do WindowsSQLServerMSSQLUser$< nome rnáquína>fi<nome_ínstâncía>, que contém aconta de serviço do SQL Server.

Um membro do role de servidor sysadmin pode fazer backup de qualquer bancode dados em uma instância e os membros do role de banco de dados db_ownerpodem fazer backup de seus bancos de dados. Você também pode adicionar umusuário no role de banco de dados fixa db_backupoperator para permitir ao usuâ-rio fazer backup de um banco de dados, enquanto impede qualquer outro acessoao banco de dados.

239

Tipos de backupO SQL Server 2008 permite criar quatro tipos diferentes de backups:

r Completo

r Diferencial

r Log de transaçáo

I Grupo de arquivos (file group)

Page 241: Livro_SQL

240

Backups completos

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Um backup completo caplura todas as páginas que contêm dados dentro de um bancode dados. As páginas que náo contêm dados não são incluídas no backup. Portanto, umbackup nunca é maior (e, na maioria dos casos, é menor) do que o banco de dados parao qual é criado. Um backup completo é abase para a recuperação de um banco de dadose deve existir antes que você possa usar um backup diferencial ou de log de transaçáo.

Como é mais comum lazer backup do que restaurar um banco de dados, o mecanismode backup é, otimizado para o processo de backup. Quando um backup é iniciado, omecanismo de backup capÍura as páginas dos arquivos de dados o mais rupidamenfepossível, sem considerar a ordem das páginas. Como o processo de backup náo se preo-cupa com a ordem das páginas, vários threads podem serusados paragravar páginasem seu dispositivo de backup. O fator limitante para a velocidade de um backup é odesempenho do dispositivo onde o backup está sendo gravado.

Um backup pode ser executado concomitantemente com outras operações do banco dedados. Como podem ser feitas alterações no banco de dados enquanto um backup estáem execuçáo, o SQL Server precisa acomodâ-las ao passo que também garanle que osbackups sejam consistentes para propósitos de restauraçã,o. Para gatz,ntir o acesso con-comitante e a consistência do backup, o SQL Server executa as etapas do procedimentode backup como segue:

1. Bloqueia o banco de dados, paralisando todas as transações

2. Colocaumamarca no log de transação

3. Libera o bloqueio do banco de dados

4. Extrai todas as páginas dos arquivos de dados e as grava no dispositivo de backup

5. Bloqueia o banco de dados, paralisando todas as transações

6. Coloca uma marca no log de transação

7. Libera o bloqueio do banco de dados

8. Extrai aparte do 1og entre as marcas e a arLexa no backup

As únicas operações que não são permitidas durante um backup completo são:

r Adicionar ou remover um arquivo do banco de dados

r Reduzirum banco de dados

A sintaxe genérica para o backup de um banco de dados é:

BACKUP DATABASE { nome_banco_de_dados | @var_nome_banco_de_dados }T0 <dìsposit'ivo_backup> [ ,...n ]| <MIRR0R T0 cláusula> I I próximo-espeìho-em ]I Ì¡IITH { DIFFERENTIAL | <opções_WfÏH_gerais> l, ...n ] } l

<dìspos'it'ivo_backup>::= { { nome_dìspos'itìvo_iógico | @var nome_dìspositìvo_lógico ]l{orsrlrAPE}=

{'nome_disposìtìvo_físico' | @var_nome_disposìt'ivo_físico } }

Page 242: Livro_SQL

<MIRRoR T0 cláusula>::= MIRRoR TO <dispositivo_backup> t ,...n l<opçöes_lr/ITH_gerais> [,...n ] : :=--0pções de configuração de backup

copy_oNly I { coMpRESSroN I No_CoMPRESSTON }DEScRrpTroN = {'texto' | @var.iável_texto }NAME = { nome_conjunto_backup | @var_nome_conjunto_backup }PASSW0RD = { senha | @varìáve'l_senha }{ EXPIREDATE = { 'data' | @var_data }

I RETAINDAYS = { dias | @var_dias } }-Opções de confìguração de mídìa

{NoINIT I INIT} I tNOSKrp I SKrp} I tNoFoRMAT I FORMAT}MEDIADESCRIPTIoN = {'texto' | @varìáve1_texto }MEDIANAME = { nome_mídia | @var_nome_mídia }MEDTAPASSW0RD = { senhamídia | @variável_senhamídia }BL0CKSIZE= { tamanhobloco | @variável_tamanhobloco }

--0pçöes de gerencìamento de erro{ No_CHECKSUM I CHECKSUM }

I { SToP_oN_ERR0R I CoNTTNUE_AFTER_ERROR }

e Restaurando um Banco de Dados

os dois únicos parâmetros exigidos para um backup são o nome do banco de dados eo dispositivo de backup. Quando você especifica um dispositivo de disco para backup,um diretório e um nome de arquivo podem ser especificados. Se não for especificadoum diretório, o SgL Server farâ obackup no disco e gravarâ o arquivo no diretóriode backup padrão configurado para a instância. Embora a maioria dos backups sejagravada em um único arquivo em disco ou em um único dispositivo de fita,uo.-ê poá.especificar até, 64 dispositivos de backup. Quando você especifica mais de um disposi,tivo de backup, o sQL server divide o srriped backup (backup em faixas) por todôs osdispositivos especificados.

NOTA Restaurando um striped backup

Quando o SQL Server coloca um striped backup em vários dispositivos, é obrigatório quetodos os dispositivos restaurem com sucesso. O SQL Server não fornece failover ou tolerânciaà falha dentro do conjunto de faixas. O conjunto de faixas é utilizado estritamente para pro-pósitos de desempenho.

Um exemplo de striped backup é:

BACKUP DATABASE AdventureldorksT0 DISK ='AdventureWorks_1,bak', DISK =' Adventureì¡lorks 2,bak'

c0

Uma das máximas da recuperaçáo de desastre é que você não pode ter cópias suficien-tes de seus backups. A cláusula MIRROR To oferece um recurio interno þara criar atéquatro cópias de um backup em uma única operação. Quando você inclui a c7âusulaMIRROR To, o sQL server recupera a pâgina uma vez do banco de dados e gtava umacópia da pâgina em cada espelho de backup.

Durante uma operação de restauração, você pode usar qualquer um dos espelhos. osbackups espelhados têm um pequeno número de requisitos:

Page 243: Livro_SQL

242 Kit de Treinamento MCTS (Exame 70-432): Microsoft Sallerver 2908

lTodososdispositivosdebackupdevemseromesmotipodemídia.

I cada espelho deve ter o mesmo número de dispositivos de backup.

a I,íIITH F1RMAT deve ser especiflcado no comando de backup'

Se você fizer backup em fita, deverá espelhar em fita. Se fizer backup em disco' devetêt

espelhar em disco. Ñáo r. podefazerbackup em fita e espelhar em disco ou vice-versa'

Æãm disso, você deve .rp.ìhu, no mesmo n-út.to de dispositivos em que fez obackup;

p"i."."tpfã, se você fizei backup em 64 disposifivos de disco, também deverá espelhar

em 64 disPositivos de disco'

o fator limitante para odesempenho do backup é a velocidad_e do dispositivo de backup'

Compactando um backup, você pode gÍavar os dados necessários, ao passo que também

reduz ovolume de dados gravuäot nã dispositivo de backup' Há um custo de sobrecar-

ga de processamento uo ,ã.o,npuctar um-backup. Embora um backup náo compactado

normalmente consuma muito poucos recursos de ptocessamento, a compactaçáo pode

consumir uma quantidade considerável deles. Normalmente, um backup é compactado

entre4:1. e 10:1.

MELHoREs PRÁTlcAs Diminuindo os tempos de backup

A sobrecarga da compacta çâo sempre vale a pena. O tempo economizado por um backup

compactado supera em mu¡io a sobrecarga associada à operação de compactação' Felizmen-

te, o SeL Server tem uma opção de confìguração, chamada padrão de compactação de ba-

c[up 1bàckup compression ieiault), que vãcê pôde configurar de modo a sempre ter backups

.orpu.tador, independente de especificar a compactação explicitamente' lnfelizmente' a

compactação só está disponível no SQL Server 2008 Enterprise'

um único dispositivo de backup pode conter vários backups. As opções INIT/NOINIT de

um comando BACKUP controlamie um arquivo de backup existente é sobrescrito ou re-

càbe anexaçáo. Quando você especifi ca l¡OlUtf e estâ fazendo backup em um aryuivo jâ

existente, o SQL Server anexa o novo backup no final do arquivo' Se você especiflca INIT e

o arquivo já existe, o SQL Server sobrescreve o arquivo com o conteúdo do novo backup'

MELHoREs PRÁTlcAs Evitando problemas de backup

para evitar confusão, recomenda-se usar um esquema de atribuição de nomes exclusivo que uti-

lize data e hora no nome do arquivo para que você possa saber quando um backup foi extraído

com base no nome do arquivo ie Uaclup. Como os backups são extraídos para reduzir o risco de

plráà a" dados, tambér nun.u é uma boa ideia incluir vários backups em um único arquivo'

Quando CHECKSUM é especificado, o SQL Server confere a soma de verificação dapá-

!inu, ,. ela existir, unt., d. gravar a pâgina no backup. Além disso, é calculada uma

ãoma de verificaçáo para o bãckup inteiro, a qual pode ser usada para determinar se

o backup foi coriomþldo. O comportamento paü'ao para erro_s encontrados durante

um backup é STop-òN-ERRon. ie for encontiada uma soma de verificaçáo de pâgina

inválida durante um bãckup, o backup terminará com um erro. Para continuar após

o erro e fazerbackupdo måximo de páginas possível, você pode especificar aopçâo

coNnNUEIAFTERJERROR.

Page 244: Livro_SQL

NOTA ldentificandopáginasinválidas

Recomenda-se especificar a opção CHECKSIJM para capturar páginas inválidas o mais cedopossível. Você não vai querer se deparar com surpresas quando precisar usar o backup pararestaurar um banco de dados.

Backups de log de transaçãoCada alteração feita em um banco de dados tem uma entrada inserida no log de transa-çã'o. Cada linha recebe um número exclusivo internamente, chamado LSN (Log SequenceNumber). O LSN é um valor inteiro que começa em O quando o banco de dados ê criadoe é incrementado atê, o infinito. Um LSN nunca é. rettilizado parcumbanco de dados eé sempre incrementado. Basicamente, um LSN fornece um número em sequênci a paracada alteraçãto feita em um banco de dados.

O conteúdo de um log de transaçáo é dividido em duas partes básicas - uma ativa euma inativa. A parte inativa do log de transação contém todas as alterações efetivadasno banco de dados. A parte ativa do log contém todas as alterações ainda não efetiva-das. Quando um backup de log de transação é executado, o SQL Server inicia no menorLSN do log de transação e começa agravat cada registro de log de transaçáo sucessivono backup. Assim que o SQL Server atinge o primeiro LSN que ainda não foi efetivado(isto é, a transação aberra mais antiga), o backup de log de transação termina. Entáo, aparte do log de transação que teve o backup feito é removida, permitindo que o espaçoseja reutilizado.

Com base no número em sequência é possível restaurar um backup de 1og de transaçáoapós o outro para recuperar um banco de dados em qualquer ponto no tempo, simples-mente seguindo o encadeamento de transações, conforme identificado pelo LSN.

Como os backups de iog de íransaçã.o se destinam a ser restaurados um após o outro, asconstraints sobre eles dependem de se ter a sequência de LSNs inteira intacta. eualqueração que crie uma lacuna na sequência de LSNs impede a execuçáo de qualquer backupde log de transação subsequente. Se for introduzida uma lacuna de LSN, você deverácriar um backup completo antes de começar a fazer o backup do log de transação.

Um backup de log de transação funciona exatamente como um backup incremental noMicrosoft Windows. Um backup de log de transaçáo reúne todas as transaçóes efetiva-das no log desde o último backup de log de transação. contudo, como um backup de logde transação contém apenas as transações que foram executadas no banco de dados,você precisa de um ponto de partidaparao encadeamento de logs de transação.

Antes de executar um backup de log de lransação, você deve lazer umbackup completo.Após o primeiro backup você pode restaurar o banco de dados em qualquer ponto notempo, desde que o encadeamento de logs de transação náo seja interrompido. Backupscompletos adicionais podem ser criados para se ter um ponto de partida mais recenteparauma operação de restauração. Independente do número de backups completos cria-dos, desde que você não tenha introduzido uma lacuna no encadeamento de LSNs, podecomeçar com qualquer backup completo e restaurar qualquer log de transação desseponto em diante para recuperar um banco de dados.

Capítulo 9 r Fazendo Backup e Restaurando um Banco de Dados

Page 245: Livro_SQL

244

A sintaxe geral da criação de um backup de log de lransaçáo é:

BACKUP LOG { nome-banco-de-dados | @var-nome-banco-de-dados }T0 <dispos'it'ivo_backup> [ ,...n ][ <MIRROR T0 cláusula> ] [ próxjmo-espe]ho-em lI I¡IITH { <opções-hlITH-geraìs> | <especopção-específica-do-log> } [,...n

I I t;l

Backups diferenciaisUm backup diferencial captura todas as extensões que mudaram desde o último backupcompleto. o principal objetivo de um backup diferencial é reduzir o número de backups de

log de transaçáo que precisam ser restaurados. Um backup diferencial precisa ser aplicadoem um backup completo e não pode existir até que um backup completo seja criado.

o SQL Server controla cada extensão que foi aTterada após um backup completo usandouma pâgina especial no cabeçalho de um banco de dados, chamada DCM (DifferentialChange Map - mapa de alteruçáo de diferencial). Um backup completo zen o conte(tdodo DCM. Quando sáo feitas alterações em extensões dentro do banco de dados, o SQL

Server ajusta para 7 o bit correspondente à extensão. Quando um backup diferencial é

executado, o SQL Server lê o conteúdo do DCM paralocalizar todas as extensões que

foram altendas desde o último backup completo.

Backup diferencial não é o mesmo que backup incremental. Um backup de log de transaçãoé um backup incremental, pois captura todas as alterações que ocorreram desde o últimobackup de 1og de transação. Um backup diferencial contém todas as páginas alteradasdesde o último backup completo. Por exemplo, se você fosse extrair um backup completo àmeia-noite e um backup diferencial a cada quatro horas, tanto o backup das 04h00m como

o das 08h00m conteriam todas as alterações feitas no banco de dados desde a meia-noite.

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

A opção COPY_ONLY

Uma das opções que podem ser especificadas para qualquer tipo de backup é COPY_

oNLY Cada backup executado em um banco de dados tem um efeito no ponto de

partida de uma recuperaçáo e em quais backups podem ser usados. Os backups di-ferenciais contêm todas as extensões que mudaram desde o último backup comple-to; portanto, todo backup completo executado altera o ponto de partida em que umbackup diferencial é baseado. Quando um backup de log de lransaçáo é executado,

as transações que tiveram o backup feito são removidas do log de transaçáo.

ocasionalmente, você precisa gerar um backup pan uiar um banco de dados paraum ambiente de desenvolvimento ou de teste. Você quer ter o conjunto de dados

mais recente, mas náo quer afelar o conjunto de backup do ambiente de produçáo.A opção COPY_ONLY permite gerar um backup que pode ser usado para criar oambiente de desenvolvimento ou teste, mas náo afeta o estado do banco de dados

nem o conjunto de backups que está em produção. Um backup completo com aopção COPY_ONLY não reinicia a página do mapa de altençáo de diferencial e,

portanto, não tem nenhum impacto nos backups diferenciais. Um backup de 1og de

transaçáo com a opçáo COPY_ONLY náo remove transações do log de transaçáo.

Page 246: Livro_SQL

Backups de grupo de arquivosEmbora os backups completos capturem todas as páginas usadas no banco de dados in-teiro, o backup completo de um banco de dados grande pode consumir uma quantidadesignificativa de espaço e tempo. se você precisa reduzir apegada de um backup, podecontal emvez disso, com os backups de arquivo ou de grupo de arquivos. conforme onome implica, um backup de arquivo/grupo de arquivos permite ter como alvo parte deum banco de dados.

Capítulo 9 r Fazendo Backup e Restaurando um Banco de Dados

CUIDADO Fazendo backup de arquivos individuais

Embora seja possível fazer backup de um arquivo, recomenda-se que seus backups sejam ape-nas tão granulares quanto o nível de grupo de arquivos. Um grupo de arquivos é uma fronteirade armazenamento e quando você tem vários arquivos dentro de um grupo de arquivos, oSQL Server armazena os dados por todos os arquivos. Contudo, com relação à tabela, índiceou partição, a distribuição de dados entre os arquivos é basicamente aleatória. Portanto, pararecuperar um banco de dados, é necessário que todos os arquivos sob um grupo de arquivosestejam exatamente no mesmo estado.

os backups de grupo de arquivos podem ser usados em conjunto com os backups dife-renciais e de log de transaçáo para recuperar uma parte do banco de dados no caso deuma falha. ,{lém disso, desde que você não precise restaurar o grupo de arquivos princi-pal e esteja usando o SQL Server 2008 Enterprise, o banco de dados podetâpermaneceronline e acessível para os aplicativos durante a operação de restauração. Somente aparte do banco de dados que está sendo resfaurada fica offtine.

@ o,.o DE E*AME

Você precisa saber como 'faz cada tipo de backup que pode ser executado . Fazer o backup erestaurar bancos de dados e o ambiente sQL server é um enfoque importante do exame.

245

Backups parc¡a¡sOs grupos de arquivo podem ser marcados como somente leitura. Um grupo de arquivossomente leitura não pode ter alterações feitas nos objetos nele armazenados. Como oobjetivo dos backups ê capturar as alterações pan quevocê possa reconstruir um bancode dados no estado mais atual durante uma operação de recuperaçáo, o backup de gru-pos de arquivo que não podem mudar consome espaço de forma desnecessária dentrodo backup.

Pal'areduzir o tamanho de um backup para apenas os grupos de arquivo que podemmudar, você pode fazer um backup parcial. Os backups parciais são feitos especificando-se a opção READ_WRITE_FILEGROUPS, como segue:

BACKU P DATABASE n ome_ban co_de_dados READ_WRITE_F] LEGROU pS

[,<1 ista_grupo-de-arquivos_arquivo>] T0 <dìsposìtìvo_backup>

Quando um backup parcial é executado, o sel server raz obackup do grupo de arqui-vos principal, de todos os grupos de arquivo deleituralgravação e de todos os grupos dearquivos somente leitura especificados explicitamente.

Page 247: Livro_SQL

246

Corrupção de página

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Espera-se que, você nunca tenha que lidar com corrupçáo dentro de um banco de dados.

Infelizmente, os componentes de hardware falham, especialmente controladoras e uni-dades de disco. Antes de uma falha completa, as controladoras ou as unidades de disco

podem corromper pâginas de dados realizando gravaçóes incompletas.

Antes do SQL Server 2005, quando o SQL Server encontrava uma página corrompida,possivelmente você podia ter a instância inteira saindo do ar. O SQL Server 2OO5 intro-duziu a capacidade de colocar páginas corrompidas em quarentena, enquanto permitiaao banco de dados permanecer online. Executando-se o comando a seguir, o SgL Server

detecta páginas corrompidas e as coloca em quarentena:

ALTER DATABASE <nomebd> SET PAGE-VERIFY CHECKSUM

Quando o SQL Server grava uma página no disco, é calculada uma soma de verificaçáopara a pâgina. Quando você ativa a verificação de pâgina, sempre que uma pâgina ê

lida do disco o SQL Server calcula uma nova soma de verificaçáo e a compara com a

soma de verificaçáo armazenada na pâgina. Se as somas de verifrcação náo correspon-

derem, o SQL Servet rcfornarâ um erro e rcgistrarâ a pâgina em uma tabela no bancode dados msdb.

NOTA Reparando uma página corrompida

Se o banco de dados está participando de uma sessão de Database Mirroring, uma cópia da

página corrompida é recuperada do espelho. Se a página do espelho está intacta, a página

corrompida é reparada automaticamente com aquela recuperada do espelho.

Embora páginas corrompidas possam ser colocadas em quarentena, o SQL Server

tem um mecanismo de proteção em vigor para proteger seu banco de dados de umacorrupção generalizada. Há um limite de 1.000 páginas corrompidas no total em umbanco de dados. Quando você atinge o limite de páginas corrompidas, o SQL Servet

tira o banco de dados do ar e o coloca em um estado suspeito para protegê-lo de

danos maiores.

Planos de manutençãoOs planos de manutençáo fornecem um mecanismo para ctiar graficamentejob de tarefas que suportam funções administrativas comuns, como backup,

çáo e gerenciamento de espaço.

As tarefas suportadas pelos planos de manutenção são:

r Backup de bancos de dados e logs de transação

r Reduçáo de bancos de dados

r Reindexação

t Atualizaçáo de estatísticas

t ReaTizaçã,o de verificações de consistência

fluxos de

reindexa-

Page 248: Livro_SQL

As tarefas mais comuns executadas pelos planos de manutençáo são os backups debanco de dados. Em vez de escrever o código para fazer backup de um banco de dados,você pode configurar um plano de manutençáo para executar as operações de backupque precisa para dar suporte aos seus requisitos de recuperação de desastre.

NOTA Executando planos de manutenção

Capítulo 9 r Fazendo Backup e Restaurando um Banco de Dados

Os planos de manutenção são baseados nas tarefas dentro do SSIS (SQL Server lntegrationServices). Portanto, quando um plano de manutenção é executado, primeiro ele carrega omecanismo SSIS. Então, o .NET Framework interpreta as tarefas dentro do pacote, constrói asinstruçöes de backup necessárias e executa o código gerado.

Certificados e chaves mestrasSempre existe uma chave mestra de serviço para cada instância. Você também poderiater chaves mestras e certificados de banco de dados. O backup de certificados e chavesmestras precisa ser feito pan garantir uma recuperação completa de sua instância.

Uma chave mestra de serviço é ctiada automaticamente na primeira vez que uma ins-tância é iniciada. A chave mestra de serviço ê regenercda sempre que você a7Íera a contade serviço ou a senha da conta de serviço do SQL Server. A primeira açâo a executarapós uma instância ser iniciada é lazer o backup da chave mestra de serviço. Você tam-bém deve fazer backup da chave mestra de serviço imediatamente após uma alteraçáona conta de serviço ou na senha da conta de serviço. A sintaxe genérica parc fazetba-ckup de uma chave mestra de serviço é:

BACKUP SERVICE MASTER KEY T0 FILE = 'caminho_para_arquivo'ENCRYPTTON BY PASSWORD = 'senha'

As chaves mestras de banco de dados (DMKs) são geradas antes da uiaçáo de um certi-ficado, de uma chave simétrica ou de uma chave assimétrica. Conforme explicado no Ca-pítulo 1 1, "Projetando a segurança do SQL Server", uma DMK é a raiz da hierarquia decriptografla em um banco de dados. Para garantir que você possa acessar certificados,chaves assimétricas e chaves simétricas dentro de um banco de dados, é preciso ter umbackup da DMK. Imediatamente após a criaçáo de uma DMK, você deve criar um backupdela. A sintaxe genérica para fazer backup de uma DMK é:

BACKUP MASTER KEY T0 FILE = 'cam'inho_para arquivo'ENCRYPTI0N BY PASSWORD = 'senha'

Antes de se fazer backup de uma DMK, ela deve ser abefia. Por padrão, uma DMK é crip-tografada com a chave mestra de serviço. Se a DMK é criptografada somente com umasenha, você deve primeiro abri-la usando o comando a seguir:

USE <nome do banco de dados>;OPEN MASTER KEY DECRYPTION BY PASSI^ÍORD = '<EspecificarSenhaForteAqui>';

Os certificados são usados para criptografar dados, assim como para assinar módulosde código de forma digital. Embora você possa criar um novo certificado para substituira assinatura digital no caso de perda de um certificado, precisa ter o cerúficado originalpara acessar quaisquer dados que foram criptografados com o certificado. Os cerfifica-

247

Page 249: Livro_SQL

248 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

dos têm uma chave pública e uma chave privada. Você pode fazer backup apenas dachave pública, usando o comando a seguir:

BACKUP CERTIFICATE nomecert T0 FILE = 'caminho_para_arquìvo'

Contudo, se você restaurar o backup de um certificado contendo somente a chave pú-blica, o SQL Server gerarâ uma nova chave privada. Infelizmente, a chave privada é,

o componente importante de um certificado ulilizado para criptografarldescripfografardados dentro do SQL Server. Portanto, você precisa garanlir que seja feito o backuptanto das chaves públicas como das privadas de um certificado. Assim como acontececom as chaves mestras, você deve fazerbackup de um certificado imediatamente após acriação usando o comando a seguir:

BACKUP CERTIFICATE nomecert T0 FILE = 'caminho_para-arquivo'I I^IITH PRIVATE KEY

( FILE ='caminho_para_arquìvo_chave_privada',ENCRYPTION BY PASSVìIORD ='senh¡ criptografia'[ , DECRYPTI0N BY PASST^IORD = 'senha_descriptografia' ] ) l

Armazenamento de backup

Para restaurar bancos de dados após um desastre, você precisa ser capaz de

acessar seus backups. Como os desastres podem abranger toda uma instalação,todos os backups devem ser armazenados fora da sede. Contudo, os backupsmovidos para uma instalaçáo de armazenamento fora da sede apresentam umrisco de segurança, pois você está movendo dados para outro lugar, fora doscontroles de segurança do Active Directory e de sua rede. Portanto, você precisaadolar medidas de segurançaffsica adequadas paragaranlir que seus backupsestejam seguros.

As chaves mestras e os certificados impõem uma constraint adicional ao armaze-namento fora da sede. É comumuma empresa ter um único fornecedor de backupÍorada sede que reúne e guarda todos os backups corporativos. Se alguém rou-basse o backup de um banco de dados que contivesse dados criptografados, nãopoderia acessar os dados sem também ter acesso às chaves mestras e aos certifica-dos. Portanto, embora você precise fazerbackup de certificados e chaves mestras,os backups de suas chaves mestras e certifïcados nunca devem ser guardados nomesmo local dos bancos de dados a que estão associados.

MAIS INFORMAçöES Chaves mestras

O Capítulo l-l- tem mais informaçöes sobre o uso e o gerenciamento de certificados e chavesmestras.

Page 250: Livro_SQL

Validando um backupComo os backups sáo sua apólice de seguro para um banco de dados, você precisagaranfir que os backups criados sejam válidos e ufilizéxeis. Para validar um backup,execute o comando a seguir:

RESTORE VERIFYONLY FROM <dispositivo de backup>

Quando um backup é validado, o SQL Server realíza as seguintes verificações:

I Calcula uma soma de verificação pan o backup e compara com a soma de verifica-çã.o atmazenada no arquivo de backup

Capítulo 9 r Fazendo Backup e Restaurando um Banco de Dados

T

IVerifica se o cabeçalho do backup estâ gravado corretamente e é válido

Percorre o encadeamento de páginas para certificar-se de que todas as páginas este-jam contidas no banco de dados e possam ser localizadas

t't"rt" rápido

1. Quais são os qûatro tipos de backups?

2. Como você pode deÍectat e registrar páginas corrompidas?

Respostas

1. Você pode executar backups completos, diferenciais, de log de transaçáo e dearquivo/grupo de arquivos. Um backup completo é exigido antes que vocêpossa criar um backup diferencial ou de log de transação.

2, ExecuTeALTER DATABASE <nome do banco de dados> SET PAGE VERIFYCHECKSUM.

PRÁïcA Fazendo backup de bancos de dadosNos exercícios a seguir, você vai criar backups completos, diferenciais e de log detransação.

249

NOTA

Antes de fazer os exercícios a seguir; verifique se o banco de dados Adve ntureWorks está con-figurado no modelo de recuperação Completo.

Neste exercício, você vai criar um backup compactado para o banco de dadosAdventu-reLAorþ.s e espelhar os backups paÍa ter failover e validar somas de verificaçã o de pâgina.

1. Execute o código a seguir para fazer backup do banco de dados AdventureWorþ.s:

BACKUP DATABASE AdventureWorksT0 DISK ='c:\test\AdventureWorks_1.bak'MIRROR T0 DISK ='c:\test\AdventureVr/orks_2.bak'Ì¡IITH COMPRESSION, INIT, F0RMAT, CHECKSUM, ST0P_ON_ERROR

GO

Page 251: Livro_SQL

250 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Neste exercício, você vai cÍiaÍ dois backups de log de transaçáo para o banco de dadosAdvmtureWorþs.

1. Execute o código a seguir para modificar dados e fazer o primeiro backup de log de

transação:

USE AdventureVr/orksGO

INSERT lNTO HumanResources.Department(Name, GroupName)VALUES('Test1','Research and Development')GO

BACKUP LOG Adventurelr/orksT0 DISK ='c:\test\Adventurelforks_1.trn'hIITH COMPRESSION, INIT, CHECKSUM, STOP-ON-ERROR

c0

2. Execute o código a seguir para fazü outra modificaçâo de dados e um segundobackup de 1og de transaçáo:

INSERT INTO HumanResources.Department(Name, GroupName)VALUES('Test2','Research and Development')60

BACKUP LOG Adventurelr/orksTO DISK ='c:\test\AdventureWorks_2.trn'WITH COMPRESSION, INIT, CHECKSUM, STOP-ON-ERROR

60

Neste exercício, você vai cúil um backup diferencial para o banco de dados Adventu-reworks.

1. Execute o código a seguir para criar mais duas transações:

USE Adventurel¡lorksGO

ïNSERT INT0 HumanResources. Department(Name, CroupName)VALUES('Test3','Research and Development')c0

2. Execute o código a seguir para $iar um backup diferencial:

BACKUP DATABASE AdventureWorksT0 DISK ='c:\test\Adventurel¡/orks_l-.dif'MIRROR T0 DISK ='c:\test\AdventurelVorks_2.dif 'hIITH DIFFERENTIAL, COMPRESS]ON, INTT, FORMAT, CHECKSUM, STOP-ON_

ERROR

GO

Page 252: Livro_SQL

Resumo da lição

I Os backups completos são o ponto de partida para todo procedimento de backup e

processo de recuperação. Um backup completo contém somente as páginas dentrodo banco de dados que foram usadas.

r Os backups diferenciais contêm todas as pâginas que foram alteradas desde o ú1-

timo backup completo e sáo usados para rcduzir o número de backups de log de

transação que precisam ser aplicados.

I Os backups de log de transaçáo contêm todas as alterações que ocorreram desde o

último backup de log de transação.

r Para executar um backup de log de transaçáo, o banco de dados precisa estar nomodelo de recuperação Completo ou Registro em massa, um backup completo deveter sido executado e o 1og de transaçáo náo deve ter sido truncado desde o últimobackup completo.

r Você só pode fazerbackup dos grupos de arquivo que aceitam alterações usando aopção READ_WRITE_FILEGROUPS do comando BACKUP DATABASE.

Revisão da lição

Responda a pergunta a seguir paÍa testar seu conhecimento sobre aLição 1 . A perguntatambém está disponível no CD do livro (em inglês) se você preferir revísâ-la em formatoeletrônico.

Capítulo 9 r Fazendo Backup e Restaurando um Banco de Dados

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

25L

1. Você é o administrador de banco de dados da Fabrikam. O banco de dados orders é

fundamentaT pan as operações da empresa e está configurado no modelo de recu-peraçâo Completo. Você está fazendo backups completos diariamente às 01hOOmin,backups diferenciais a cada quatro horas, começando às 05h00min, e backups de

Iog de transaçâo a cada cinco minutos. Se o banco de dados Orders se danificasse e

saísse do ar, quaT seria o primeiro passo no processo de rcslauração?

A. Restaurar o backup completo mais recente com a opçáo NORECOVERY

B. Restaurar o backup diferencial mais recente com a opção NORECOVERY.

C. Fazer backup do log de transação com a opçáo NO_TRUNCATE.

D. Fazer backup do 1og de transação com a opção TRUNCATE_ONLY

Page 253: Livro_SQL

2s2

Lição 2: Restaurando bancos de dados

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

No dia a dia, você adquire vários tipos de seguro. Você espera nunca ler de ulilizar o

seguro, mas no caso de um desastre, uma apólice de seguro proporciona proteção finan-ceira. Os backups são a apólice de seguro para seus dados. Você espera nunca precisarutilizar seus backups, mas no caso de um desastre, eles permitirâo recuperar seus dadose continuar as operações empresariais. Nesta liçáo você vai aprender a usar seus ba-ckups para recuperar seu ambiente SQL Server. Além disso, como a recuperação de umbanco de dados depende do estado do 1og de transaçáo, você também vai aprender umpouco sobre os detalhes internos de um log de transaçáo.

Após esta lição, você será capaz de:I Restaurar bancos de dados

Tempo estimado para a lição:20 minutos

Detalhes internos do log de transaçãoUm log de transação é composto de um ou mais arquivos associados a um banco de

dados que monitoram toda modificação leita nos dados ou objetos dentro do banco de

dados. os logs de transação não ultrapassam os limites dos bancos de dados; portanto,uma transação empresarial executada em vários bancos de dados é fisicamente imple-mentada como uma transaçáo separada dentro de cada banco de dados afetado. O 1og

de transação também é exigido para armazenar informações suficientes para permitirque o SQL Server recupere um banco de dados quando a instância for reiniciada.

A principal informaçáo dentro de um log de transação é o LSN. O LSN começa em 0quando o banco de dados é criado e é incrementado até o infinito. O LSN sempre avan-

ça, nunca se repete e náo pode ser redefinido com um valor anterior. Cada operação que

afete o estado do banco de dados incrementa o LSN.

Cada unidade de armazenamento dentro de um banco de dados monitora o LSN da últimamodificação feita na estrutura de atmazenamento. Em nível de banco de dados, o LSN daú1tima alteraçáo feita no banco de dados é armazenado no cabeçalho do arquivo de dadosmestre. Em nível de arquivo de dados, o LSN da última alteração feita em uma página den-tro do arquivo é armazenado no cabeçalho do arquivo de dados. Cadapâgina de dados den-tro de um banco de dados também grava o LSN da última alteraçâo dapâgina de dados.

Todas as alteraçóes de dados ocorrem dentro de buffers na memória. Quando é leilauma alteraçáo, o buffer correspondente é modificado e um registro é adicionado no logde transaçáo. Uma página modificada no pool de buffers é referida como página sqja.Cadapágina suja monitora o LSN no log de transação correspondente à alteração que

modificou a pâgina no pool de buffers. Quando o SQL Server executa um checkpoint,todas as páginas sujas do pool de buffer sáo gravadas nos arquivos de dados.

Durante o processo de checkpoint, o SQL Server compara o LSN da pâgina suja no poolde buffers com o LSN dapâgina de dados no disco. Se o LSN dapâgina de dados no dis-co é igual ou menor do que o LSN da página suja no pool de buffers, assim como igual

Page 254: Livro_SQL

ou menor do que o LSN do arquivo de dados, apâgina do disco é sobrescriia pelapâginado pool de buffers. Se o LSN da pâgina suja é maior do que o da pâgina do disco ou doarquivo de dados que contém apâgina, apâgina do pool debuffers é sobrescrita pelapâgina do disco. Quando o processo de checkpoint termina degravar páginas sujas nosarquivos de dados, o maior LSN gravado em cada arquivo é,gravado no cabeçalho do ar-quivo. Além disso, o maior LSN gravado no processo de checkpoint inteiro ê gravado nocabeçalho do arquivo de dados mestre. O SQL Server garante que o LSN de cada páginadentro de um arquivo seja igual ou menor do que o LSN do arquivo e que o LSN de cadaarquivo dentro de um banco de dados seja igual ou menor do que o LSN do banco de da-dos. A última etapa do processo é apagar, em cada pâgina suja afetada pelo checkpoint,o flag que identifica que apâgina foi alterada.

Quando o SQL Server é iniciado, cadabanco de dados passa por um processo chamado de

recuperação de reínícíalízaçã0. A recuperaçáo de reinicializaçáo ocorre em duas fases -UNDO e REDO. Durante a fase REDO, todas as transações efetivadas do log de transaçãosão descarregadas no disco. A fase REDO usa a mesma lógicabâsica do processo de che-ckpoint. Se o LSN armazenado napâgina é menor ou igual ao LSN do registro de log que

está sendo gravado napâgina, a altençáo é gravada. Caso contrário, ela é pulada, sendoconsiderada como já perpetuada no disco. Quando a fase REDO termina, a fase UNDO co-meça. A fase UNDO percorre o log de transação e invalida qualquer transaçáo no log que

ainda esteja aberta, garantindo que uma transação não efetivada náo possa ser gravadano disco. Quando a fase UNDO termina, o banco de dados passa por um processo referi-do como ûva.nço. Quando um banco de dados ê avançado, o SQL Server lê o último LSNgravado no log de transação, incrementa o LSN e gravao novo LSN no cabeçalho de cadaarquivo de dados dentro do banco de dados, garantindo que as transações mais antigasdo que o ponto de avanço não possam ser gravadas nos arquivos de dados.

Todo backup criado armazena o LSN mínimo e máximo do banco de dados, o qual corres-ponde ao backup extraído. Como um backup completo contém aparÍe do log de transaçãoque foi gercda enquanto o backup estava em execução, um backup completo é consistentecom o momento da sua conclusão e armazena somente o último LSN usado dentro do ba-ckup. Os backups diferenciais e de log de transaçáo gravam o LSN do banco de dados noinício da operação de backup, assim como o LSN no final da operaçáo de backup.

Como o LSN está sempre avançando, o SQL Server só precisa comparar o LSN atual como LSN (ou LSNs) gravado para o backup para determinar se um backup pode ser aplica-do em um banco de dados. Se o backup contém o próximo LSN da sequência, entáo pode

ser restaurado. Se o backup não contém o próximo LSN da sequência, um erro é geradoe o processo de restauraçáo termina sem aplicar quaisquer alterações.

Um backup completo ou um backup de grupo de arquivos é, obrigado a iniciar umasequência de restauração e, em seguida, os backups diferenciais e de log de transaçãoadicionais podem ser aplicados. Contudo, para restaurar backups diferenciais ou de 1og

de transaçáo adicionais, o banco de dados ou grupo de arquivos precisa estar em umestado de restauração. Qualquer fentafiva de restaurar um backup diferencial e de logde transação em um banco de dados ou grupo de arquivos que não está em um estadode restauração resultada em um erro.

Com o passar dos anos, muitas pessoas têm sido informadas incorretamente de que umbackup diferencial e de log de transação náo podem ser restaurados em um banco de

Capítulo 9 I Fazendo Backup e Restaurando um Banco de Dados 253

Page 255: Livro_SQL

254 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

dados que é recuperado porque, no final do processo de restauração, o LSN é avançadoe nâo é mais compatível com nenhum dos backups de log de transação ou diferencial.Nesse caso, o SQL Server não rejeila o backup diferencial e de log de transação devidoao LSN. o backup diferencial e de log de transação são específicos para um backupcompleto ou de grupo de arquivos. Um banco de dados recuperado pode ter transaçõesexecutadas, o que tornaria o estado do banco de dados incompatível com o backup dife-rencial e de log de transação. Como transações não podem ser executadas em um bancode dados ou grupo de arquivos que está em um estado de recuperação, o SQL Server sóprecisa verificar se o banco de dados ou grupo de arquivos está nesse estado para pros-seguir com a verificação secundfuia de compatibilidade do LSN.

MA|S TNFORMAçOES

Para obter mais informaçöes sobre como o SQL Server processa transaçöes, assim como sobrea estrutura de arquivos de dados e logs de transação, consulte o livro Microsoft SQL Server2008 lnternals (Microsoft Press, 2009, de Kalen Delaney).

Restauraçöes de banco de dadosTodas as sequências de restauração começam com um backup completo ou com umbackup de grupo de arquivos. Ao restaurar backups, você tem a opção de terminar oprocesso de restauraçáo em qualquer ponto e fornar o banco de dados disponível paratransações. Depois que o banco de dados ou grupo de arquivos que está sendo restaura-do volta aftcar online, você náo pode aplicar quaisquer backups diferenciais ou de 1og

de transação adicionais no banco de dados.

Restaurando um backup completoA sintaxe genéricapataÍestavrar um backup completo é:

RESTORE DATABASE { nome_banco_de_dados | @var_nome_banco_de_dados

I FROM <dìspos'itìvo_backup> t ,...n ] lI r{rTH { [ RECoVERY I NoREC0VERY

I

STANDBY = {nome_arquivo_reserva | @var_nome_arquivo_reserva

| <opções_la/ITH_9eraìs> [ ,...n ]l, <opção-WlTH_replicação>

l, <opção-WfTH_captura_dados_alteraçäo>

I

I

i, <opções_WITH_servi ce_broker>, <opções_hllTH_ponto_no_tempo-REST0RE_DATABAS E>

[ ,...n ]

<opções_lallTH_gera'is> [,...n ] : :=--Opções de operação de restauração

MOVE' nome_arqui vo_1 óg'i co_no_backup' T0' nome_arqui vo_si stema_operac'i onal '

[,...n ] | REPLACE I RESTART I RESTRICTED_USER

Quando um comando RESTORE é executado, se o banco de dados ainda não existe dentroda instância, o SQL Server cria o banco de dados junto com todos os arquivos sob o banco

Page 256: Livro_SQL

de dados. Durante esse processo, cada arquivo é criado e dimensionado de acordo com ostamanhos de arquivo existentes no momento em que o backup foi criado. Depois de criaros arquivos, o SQL Server começa a restaurar cadapâgina do banco de dados do backup.

DICA Restaurando um banco de dados existente

A criação e o dimensionamento de todos os arquivos associados a um banco de dados podeconsumir um tempo significativo. Se o banco de dados já existe, você deve restaurar apenassobre o banco de dados existente, conforme descrito a seguir.

Capítulo 9 r Fazendo Backup e Restaurando um Banco de Dados 255

A.opçáo REPLACE é,usadaparaforçar a restauraçáo sobre um banco de dados existente.

Como é muito mais comum lazer o backup do que restaurar um banco de dados, o pro-cesso de backup é otimizado para terminar no período de tempo mais curto. Para fazero backup de duraçáo mais curta, o SQL Server coloca as páginas no backup indepen-dente da ordem. Contudo, na restauração de um banco de dados, as páginas devem sercolocadas de volta na ordem sequencial. Dentro de cada arquivo, o SQL Server precisalocalizar a pâgina 1, depois a pâgina 2, a 3 etc. Como regra geral, uma operaçáo derestauração terâ duração de aproximadamente 30o/o afi1ais do que a do backup que estásendo restaurado.

As primeiras páginas dentro de um banco de dados armazenam as informações estru-turais sobre o banco de dados, como a lista de páginas alocadas parao banco de dados.Depois que o processo de restauraçáo tiver restaurado a primeira pâgina no banco dedados, tudo que estiver no disco no momento será invalidado. Se você estiver restau-rando sobre um banco de dados existente e o processo de restauraçáo for cancelado, nãopoderá acessar mais nada no banco de dados antes da operação dercstauração. Se vocêestiver restaurando um arquivo ou um grupo de arquivos, somente essa parte do bancode dados que estéL sendo restaurado seÉt afefada.

Se quiser que o banco de dados esteja online e acessível para transações depois que aoperação RESTORE tiver terminado, você precisa especificar a opção RECOVERY. QuandoRESTORE é executado com a opção NORECOVERY, a restauração termina, mas o bancode dados é deixado no estado RECOVERING, de modo que os backups diferenciais elou delog de transação subsequentes podem ser aplicados. A opção STANDBY pode ser usadapara permitir a execução de instruçõesSELECT no banco de dados, enquanto ainda se

realiza restaurações diferenciais e/ou de log de transação adicionais. Se você restaurarum banco de dados com a opção STANDBY será criado um arquivo adicional parafotnaro banco de dados consistente com o momento em que a última restauração foi aplicada.

O sistema de arquivos damâquina em que se está restaurando o banco de dados poderánão corresponder com o da máquina em que o backup loi extraîdo ou tahezvocê queiramudar o local dos arquivos de banco de dados durante a restauraçã,o. A opção MOVEproporciona a capacidade de mudar o local de um ou mais arquivos de dados quando obanco de dados é restaurado.

Caminhos de restauraçãoAntes de restaurar o banco de dados, você precisa primeiro obter um inventário dosbackups que criou e do estado do banco de dados a que cada backup se aplica. A Tabela

Page 257: Livro_SQL

2s6 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

9-1 fornece uma visáo geral básica do estado do banco de dados com relação a cada

backup criado na Lição 1.

Tabela 9-1 Modificaçöes de banco de dados

Backup completo

Backup de log

Backup de log

Backup diferencial

Independente do ponto no qual deseja restaurar o banco de dados, você precisa restau-rar o backup completo primeiro. Se quisesse restaurar o banco de dados somente até oponto onde o departamento Testl foi adicionado, restauraria entáo o primeiro backup de

log de transaçáo e recuperaria o banco de dados. Os departamentos Test2 e TestS seriamperdidos. Analogamente, se você quisesse restaurar o banco de dados no ponto antes do

departamento TestS ser adicionado, restauraria o backup completo e, então, o primeiroe o segundo backups de log de transaçáo antes de recuperar o banco de dados.

Se quisesse Íestaurar o banco de dados sem perder quaisquer dados, você só precisariarestaurar o backup completo e, em seguida, o backup diferencial, pois o diferencial tam-bém contém todas as alterações capturadas por cada um dos backups de log de transa-

çáo. Contudo, o que aconteceria se você restaurasse o backup completo e somente entãodescobrisse que o diferencial náo poderia ser usado devido a um dano no backup? Você

poderia restaurar os dois backups de log de transaçáo, mas perderia irrevogavelmente o

departamento TestS que foi inserido.

Para proporcionar a maior flexibilidade para uma restauraçáo, o primeiro passo emqualquer operaçáo de restawaçáo é executar um backup de 1og de transaçáo no bancode dados original. Obviamente, se o banco de dados original inteiro não existe mais,você náo tem a opçáo de extrair um backup de log de transação final antes de iniciar as

operações de restauraçáo. Contudo, desde que o log de transação esteja intacto e o ban-co de dados mestre ainda tenha uma entrada para o banco de dados daniflcado, vocêpoderá executar um comando BACKLIP LOG no banco de dados, mesmo que todos os

arquivos de dados estejam danificados ou ausentes. Aetapa no processo de restauraçãoonde você extrai primeiro um backup de log de transaçáo final é referida como backupdo¡frnal do log.

Restaurando um backup diferencialUma restauraçáo diferenciaTutiliza a mesma sintaxe de comando de uma rcstauraçáode banco de dados completa. Quando o backup completo está restaurado, você pode

entáo restaurar o backup diferencial mais recente.

lnsere Testl-

lnsere Test2

lnsere Test3

Page 258: Livro_SQL

Restaurando um backup de log de transação

A sintaxe genéúcapararestauÍar um backup de log del,ransaçáo é:

RESTORE LOG { nome-banco_de-dados | @var-nome-banco-de-dados }[ <arqu.ivo-ou_grupo de arquìvos-ou-páginas> L...n ] lI FROM <disposìt'ivo_backup> [ ,...n ] l

I WITH { I RECOVERY I NORECOVERY I

STANDBY={nome-arquivo-reserva | @var-nome-arquivo-reserva} lI , <opções_ìa/ITH_gerais> [ ,...n ]

l, <opção_h/ITH_replìcação>

| , <opções-WITH-ponto-no-tempo-REST0RE-L0C> ] | ,...n I l<opções_WfTH_ponto_no_tempo-RESTORE_LOG> : : =

I { STOPAT = {'datahora' | @var-datahora }I STOPATMARK : { 'nome-marca' | ''lsn:número-'lsn' }

I AFTER 'datahora' ]I STOPBEFOREMARK = { 'nome-marca' | 'lsn:número--lsn' }

I AFTER 'datahora' ]

Existem ocasiões em que você precisa rcslavrat um banco de dados, mas náo quer re-

cuperar toda transaçáo executada. Ao restaurar um log de transaçáo, você pode fazer o

SQL Server reproduzir apenas parte de um log de transação, executando o que é referidocomo restauração em ponto no tempo. O comando STOPAT permite especificar úma dalae hora na qual o SQL Server faz a restauração. As opções STOPATMARK e STOPBEFO-

REMARK permitem especificar uma marca WAR$ de LSN ou de log de lransaçáo parausar como ponto de parada na operaçáo de restauração.

Restaurações onlineUm banco de dados tem um estado que controla se ele pode ser acessado e quais opera-

ções podem ser executadas. Por exemplo, um banco de dados no estado ONLINE permite

a execução de transações de quaisquer outras operações, mas um banco de dados noestado EMERGENCY só permite a execução de operações SELECT por um membro dorole de banco de dadosdb_owner.

Cada grupo de arquivos dentro de um banco de dados pode ter um estado. Enquanto umgrupode arquivoi pode estar no estado REST)RING enáo estar acessível, outro grupode arquivos pode estar no estado ONLINE e aceilar transações. O estado do banco de

dados é igual ao estado do grupo de arquivos designado como PRIMARY.

O SQL Server 2008 Enterprise permite executar operações de restauração enquanto o

banco de dados ainda está online e acessível. Contudo, como um backup completo afetao banco de dados inteiro, o estado do banco de dados é o estado do grupo de arquivosprincipal e um banco de dados que está sendo restaurado náo é acessível. Para executaruma operação de restauraçã,o onlíne, você deve fazer uma restauraçáo de arquivo ou de

grupo de arquivos. ,\lém disso, você não pode estar restaurando o grupo de arquivosprincipal ou um arquivo dentro do grupo de arquivos principal.

Uma restauraçáo de grupo de arquivos que afeta somente parte do banco de dados é

referida como res tauração parcíal.

Capítulo 9 r Fazendo Backup e Restaurando um Banco de Dados 257

Page 259: Livro_SQL

258 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Restauração de uma pág¡na corromp¡daA corrupção de págína ocorre quando o conteúdo de uma pâgina não é consistente. Oconteúdo da pâgina pode se tornar inconsistente quando a soma de veriflcaçã o da pâgi-nanão corresponde ao conteúdo dapâgina ou uma linha é gravada apenas parcialmen-tenapâgina. Normalmente, a corrupçã,o depágina ocorre quando uma controladora dedisco começa a falhar.

Se a corrupção de pâgina ocorre em um índice, você não precisa fazer uma restauraçãopara corrigir apâgina corrompida. Eliminar e recriar o índice elimina a corrupção.

Contudo, se a corrupçáo ocorre dentro de uma pâgina de dados dentro de uma tabela ouda chave primánia, você precisa fazet uma restauração para conigir o problema de cor-rupção. Além de restaurar grupos de arquivo, você também pode restaurar ûma pâginaindividual no banco de dados.

A restauraçáo de página tem vários requisitos:

I O banco de dados deve estar no modelo de recuperação Completo ou Registro emmassa.

r Você deve ser capaz de criar um backup de log de transação.

I uma restauração de pâgina só pode ser aplicada em um grupo de arquivos de lei-turalgravaçã,o.

r você deve ter disponÍvel um backup completo, de arquivo ou de grupo de arquivosválido.

r A restauração de página não pode ser executada ao mesmo tempo que qualqueroutra operação de restauração.

Todas as edições do sQL server 2008 permitem restaurar uma ou mais páginas enquan-to o banco de dados está offline. O SQL Server 2OO8 Enterprise permite restaurar umapágina enquanto o banco de dados, assim como o grupo de arquivos que contém a pági-na corrompida, permanece online. contudo, as operações que tentam acessar a pâgina(ou páginas) durante uma restauração recebem um erro e falham.

A sintaxe pararestaurar uma pâgina é:

RESTORE DATABASE nome_banco_de_dadosPACE = 'arqu'ivo:págìna [ ,...n ]' [ ,...n ]FR0M <disposìtìvo_backup> [ ,...n ]

WÏTH NORECOVERY

O procedimento para restaurat uma pâgina corrompida é o seguinte:

l.2.

Recupere a ID (PageID) da pâgina danificada.

usando o backup completo, de arquivo ou de grupo de arquivos mais recente, exe-cuteocomandoaseguir:

RESTORE DATABASE nome_banco_de_dadosPAGE = 'arquivo:página [ ,...n ]' [ ,...n ]FROM <disposjtivo_backup> [ ,...n ]

hIITH NORECOVERY

Page 260: Livro_SQL

3.

4.

5.

6.

Restaure todos os backups diferenciais com a opção NORECOVERY.

Restaure todos os backups de log de transação adicionais com a opçâo NORECOVERY.

Crie um backup de log de transação.

Restaure o backup de log de transação do passo 5 usando a opção WIm RECOVERY.

@ ot.o DE E*AME

Capítulo 9 r Fazendo Backup e Restaurando um Banco de Dados

Você precisa saber as etapas para restaurar uma página em um banco de dados.

Restauração com erros de mídiaConforme observado anteriormente nesta lição, como as páginas são restauradas emordem sequencial, assim que a primeira pâgina estiver reslaurada em um banco de da-dos, tudo que existia anteriormente nâo será mais válido. Se subsequentemente fosseencontrado um problema na mídia de backup e a restauração fosse cancelada, vocêficaria com um banco de dados inválido que náo poderia ser usado. Se a única cópia de

seu banco de dados fosse aquela que acabou de sobrescrever com uma restauraçáo ouse tivesse apenas um backup do banco de dados, você não teria apenas um banco de

dados inválido, mas teria perdido todos os seus dados.

O SQL Server tem a capacidade de continuar a operação de restauração mesmo que a mí-dia de backup seja danificada. Quando encontra uma seçáo ilegível do arquivo de backup,o SQL Server pode ultrapassar a origem do dano e continuar restaurando o máximo pos-sível do banco de dados. Esse recurso é reÍeñdo como restauração de melhor es¡forço.

Depois que a operação dercstauraçáo termina, o banco de dados é configurado no modoEMERGENCy. Entáo, um administrador precisa se conectar no banco de dados e deter-minar se ele é viável. Se o banco de dados é considerado válido e viável, o administradorpode alterar o status para ONLINE. Se o banco de dados nâo é viéxel, você pelo menostem a opção de ler o máximo de dados possível do banco de dados, enquanto ele aindaesIá no modo EMERGENCY.

Para restaurar a partir de mídia de backup que foi danificada, você precisa especiflcar aopção CONTINUE_AFTER_ERROR paraum comando RESTORE DATABASE ou RESTO-RE LOG.

t't"rt" rápido

1. Qual modelo de recuperaçáo sempre permite que você restaure no ponto defalha, desde que possa fazerbackup do final do log?

2. Qual é a primeira operaçáo que deve ser executadapara qualquer operação dereslauraçã,o?

Respostas

1. O modelo de recuperação Completo.

2. Obackup do final do 1og.

Page 261: Livro_SQL

260

PRÁTtcA Restaurando um banco de dados

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Nos exercícios a seguir, você vai restaurar o banco de dados AdventureltVorþs usando os

backups que foram criados naprática da Liçáo 1.

Neste exercício, você vai daniflcar intencionalmente o banco de dados AdventureWorksde modo que seja necessária uma restauração paru poder acessar seus dados.

1. Execute a consulta a seguir para inserir uma nova linha no banco de dados Adven-tureWorks:

USE AdventureWorksc0

INSERT INTO HumanResources. Department(Name, GroupName)VALUES('Test4', ' Research and Deveìopment')c0

2. Abra o SQL Server Configuration Manager e pare o serviço SQL Server de sua ins-tância de SQL Server 2008.

Abra o Windows Explorer e exclua o arquivo AdventureWorks.mdf. Certifique-se de

não excluir o arquivo AdventureWorks_1.ldf.

No SQL Server Configuration Manager, inicie o serviço SQL Server de sua instânciade SQL Server 2008.

Reconecte na instância com o SSMS.

observe que, embora a entrada do banco de dados AdventureWorþs ainda exista, obanco de dados está completamente inacessível, pois o arquivo de dados não existemais.

3.

4.

5.

6.

Neste exercício, você vai restaurar o banco de dados AdventureWorks a parfir do backupcompleto que criou naprâtica da Liçáo 1.

NOTA

Restaurar um banco de dados exige acesso exclusivo. Antes de executar qualquer operação derestauração, você precisa certificar-se de que não tem quaisquer conexöes abertas no bancode dados Adve ntureWorks.

1. O primeiro passo em um processo de restauraçáo éfazer backup do final do log.Abra uma nova janela de consulta e execute o código a seguir:

BACKUP LOC Adventurelr/orksTO DISK ='c:\test\Adventurelr/orks_3.trn'I¡IITH COMPRESSION, INIT, NO_TRUNCATE

c0

Page 262: Livro_SQL

2. Agora que você capturou o final do 1og, execute o código a seguir para restaurar obackup completo:

REST0RE DATABASE Adventu reWorksFROM DISK :'c:\test\Adventurehlorks_l-.bak'trlITH STANDBY =' c:\test\Adventurelr/orks. stn'

co

Capítulo 9 r Fazendo Backup e Restaurando um Banco de Dados

3.

4-

Verifique se você consegue ier os dados, mas náo modificá-los.

Verifique se os departamentos que foram adicionados estão ausentes do banco dedados.

Neste exercício, você vai restaurar o backup diferencial no banco de dados Adventu-reWorks e, após averiftcaçã,o, colocar o banco de dados online.

1. Execute o código a seguir paruÍestaurar o backup diferencial:

RESTORE DATABASE Adventu reVr/orks

FROM DISK :'c:\test\AdventureVr/orks_l-.dif'ItlITH STANDBY ='c:\test\Adventureìdorks.stn'

GO

2.

3.

Verifique se os departamentos Test1, Test2 e TestS existem.

Execute o código a seguir para recuperar o banco de dados e terminar o processo derestauraçã,ol

RESTORE DATABASE AdventureWorksWÏTH RECOVERY

GO

261

Neste exercício, você vai restaurar o banco de dados AdventureWorås usando os trêsbackups de log de transação que criou anteriormente.

1. Execute o código a seguir para restaurar o backup completo do banco de dados Ad-ventureWorþ.s:

RESTORE DATABASE Adventu rel,r/orksFROM DISK :'c:\test\Adventurel¡rlorks_1.bak'WITH STANDBY ='c:\test\Adventureldorks.stn',

REPLACE

GO

2.

3-

Verifique se dados databela Department estão faltando.

Execute o código a seguir para restaurar o primeiro backup de 1og de transaçáo:

RESTORE DATABASE Adventurel¡/orksFROM DISK ='c:\test\AdventureWorks_1.trn'WITH STANDBY ='c:\test\AdventureWorks.stn'

GO

Page 263: Livro_SQL

262 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

4. Verifique se o departamento Testl agora existe.

5. Execute o código a seguir para restaurar o segundo backup de 1og de transação:

RESTORE DATABASE Adventureh/orksFROM DISK ='c:\test\AdventureWorks_2.trn'V'/ITH STANDBY ='c:\test\Adventurel¡forks.stn'

c0

Verifique se o departamento Test2 agora existe.6.

7. Execute o código a seguir para restaurar o terceiro backup de log de transaçáo:

RESTORE DATABASE Adventureh/orksFR0M DISK ='c:\test\Adventurelr/orks_3.trn'I^IITH STANDBY =' c:\test\Adventurel¡Vorks. stn'

GO

Verifique se os departamentos TestS e Test4 existem.

Execute o código a seguir para recuperar o banco de dados para acesso e transa-

ções:

REST0RE DATABASE Adventu relr/orksWITH RECOVERY

c0

8.

9.

Resumo da lição

I O primeiro passo em qualquer procedimento de restauraçã,o é lazer backup do finaldo 1og.

I Uma sequência de restauraçáo começa com uma restauração completa, de arquivoou de grupo de árquivos.

I Se você executa uma restauração com a opção NORECOVERY, pode aplicar backupsdiferenciais e de log de transação subsequentes.

r Se você executa uma restauraçáo com a opçãLo RECOVERY, o banco de dados é recu-perado e não se pode restaurar mais nenhum backup no banco de dados.

r Você pode especificar a opçã,o STANDBY durante um processo de restauraçáo, casoprecise ler o conteúdo do banco de dados enquanto ainda é capaz de restaurar maisbackups diferenciais e de log de transação.

r Você pode executar um backup de log de transação desde que o arquivo de log detransação esteja intacto, mesmo que todos os arquivos de dados do banco de dadosestejam danificados.

r Uma resÍ.auração pode passar pelo dano damídia de backup quando você especificaa opçáo CONTINUEJAST_ERRORS. Se erros são encontrados, o banco de dados é

deixado no modo EMERGENCY após a restauração.

Page 264: Livro_SQL

Revisão da lição

Responda a pergunta a seguir paÍatestaÍ seu conhecimento sobre aLição 2. Apergantatambém está disponível no CD do livro (em inglês) se você preferir revisála em formatoeletrônico.

NOTA Respostas

Capítulo 9 r Fazendo Backup e Restaurando um Banco de Dados

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. O servidor em que o banco de dados Customers está sendo executado apresenta fa-tha e precisa ser substituído. Você constrói um novo servidor e instala o SQL Server2008. Quando construiu o novo servidor, você decidiu que, em vez de configurá-loexatamente como o antigo, devia implementar uma nova estrutura de letra de uni-dade de disco e pastapara arquivos de dados e de log. Qual opção você precisaráusar quando restaurar o banco de dados Customers no novo servidor?

A. NORECOVERY

B. CONTINUE_AFTER ERROR

C. MOVE

D. PARTTAL

263

Page 265: Livro_SQL

264

Lição 3: Snapshots de banco de dados

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

O recurso Database Snapshots foi introduzido no SQL Server 2005 pan oferecer aosusuários um método para criar cópias somente leitura de dados rapidamente. Nestalição você vai aprender acriar um snapshot de banco de dados, assim como a usar umsnapshot de banco de dados parareverter dados ou um banco de dados em um pontoanterior no tempo.

NOTA Database Snapshot

O recurso Database Snapshot está disponível somente no SQL Server 2008 Enterprise.

CUIDADO Gerenciando dados FILESTREAM

O Database Snapshot não é compatível com FILESTREAM. Se você criar um snapshot em umbanco de dados com dados FILESTREAM, o grupo de arquivos FILESTREAM será desativado enão estará acessível.

Após esta lição, você será capaz de:

I Criar um snapshot de banco de dados

I Reverter dados ou um banco de dados a partir de um snapshot de banco de dados

Tempo estimado para a lição:20 minutos

Criando um snapshot de banco de dadosA criação de um snapshot de banco de dados é muito parccida com a criação de qual-quer banco de dados. Para ctiar um snapshot de banco de dados, você usa o comandoCREATE DATABASE com a clâusula AS SNAPSHOT OF. Como um snapshot de banco de

dados é uma cópia somente leitura de um banco de dados em um ponto no tempo, vocênáo especifica um log de transaçáo.

Os requisitos parauiar um snapshot de banco de dados são:

r Você deve incluiruma entrada paracada arquivo de dados especificado no bancode dados de origem.

r O nome lógico de cada arquivo deve corresponder exatamente ao nome no bancode dados de origem.

A sintaxe genérica para uiar um snapshot de banco de dados é:

CREATE DATABASE nome*snapshot_banco de dadosON

(NAME = nome_arquivo_lógìco,FILENAME = 'nome_arquivo_so') L,,.n l

AS SNAPSHOT 0F nome_banco_de_dados_origem

Page 266: Livro_SQL

As restrições para um snapshot de banco de dados são:

r Você não pode fazerbackup, restaurar ou remover um snapshot de banco de dados.

r O snapshot de banco de dados deve existir na mesma instância do banco de dadosde origem.

r Índices full text não sáo suportados.

r FILESTREAM não é suportado e quaisquer dados FILESTREAM serão inacessíveispor meio do snapshot de banco de dados.

r Você náo pode criar um snapshot de banco de dados em um banco de dados de

sistema.

r Você não pode eliminar, restaurar ou remover um banco de dados de origem quetenha um snapshot de banco de dados.

r Você não pode fazerreferência a grupos de arquivo que estejam offline, extintos ouem restauração.

Quando um snapshot de banco de dados é criado, o SQL Server náo aloca espaço emdisco equivalente ao tamanho atual dos arquivos de dados no banco de dados de ori-gem. Em vez disso, o SQL Server tira proveito de um recurso do sistema operacionalchamado de arquívos esparsos (sparse¡frles). Basicamente, um arquivo esparso é umaenlrada na Íabela de alocação de arquivos e não consome quase nenhum espaço nodisco. À medida que dados sáo adicionados no arquivo, ele cresce automaticamente nodisco. Usando-se arquivos esparsos, o tempo de criaçáo de um snapshot de banco dedados é independente do tamanho do banco de dados de origem.

Da perspectiva de um aplicativo é muito simples acessar um snapshot de banco de da-dos. Um snapshot de banco de dados se parece e age como um banco de dados somenteleitura para quaisquer consultas que estejam sendo execufadas. Portanto, você podeexecutar uma instrução SELECT em um snapshot de banco de dados e usar o snapshotexatamente como faria com qualquer outro banco de dados.

No momento da criação, um snapshot de banco de dados não contém dados. No mo-mento em que um snapshot de banco de dados é, uiado, você pode executar instruçõesSELECT nele. O SQL Server usa o banco de dados de origem para recuperar dados quenão mudaram desde que você criou o snapshot de banco de dados.

Tecnologia Copy-On -Wr¡te

Como um snapshot de banco de dados precisa manter o estado dos dados no banco dedados de origem no momento em que foi criado, o SQL Server precisa de um mecanismopara gerenciar as alterações que ocorram dentro do banco de dados de origem. O meca-nismo utilizado pelo SQL Server é conhecido como Copy-On-Iilríte.

Lembre-se de que os dados dentro do SQL Server sáo armazenados em páginas; existemoito páginas em uma extensáo e o SQL Server lê, e grava extensões. Na primeira vez queocorre uma modificação em uma pâgina de dados dentro de uma extensáo, o SQL Ser-ver copia a imagem anterior da extensão no snapshot de banco de dados. Quando sãoexecutadas instruções SELECT no snapshot de banco de dados, o SQL Server recupera

Capítulo 9 r Fazendo Backup e Restaurando um Banco de Dados 265

Page 267: Livro_SQL

266 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

os dados do snapshot que foram alterados, ao passo que ainda extrai dados do banco de

dados de origem para as extensões que não foram alteradas.

Gravando a imagem anterior da extensão na primeira vez que uma alteraçáo é feita,o SQL Server permite que ocorram alterações no banco de dados de origem, enquantotambém gararúe que as consultas feitas no snapshot de banco de dados não reflitam as

alterações feitas depois que o snapshot foi criado.

Depois de feita a alteração inicial em uma pâgina dentro de uma extensão e de o SQL

Server gravar a extensáo no snapshot de banco de dados, todas as alterações subse-quentes feitas na extensáo são ignoradas pelo recurso Copy-On-Write.

Como você pode criar vários snapshots de banco de dados em um banco de dados de

origem, a imagem anterior de uma extensão é gravada em cada snapshot de banco de

dados que ainda não recebeu uma cópia da extensão.

DICA Tamanho máximo de snapshot de banco de dados

Como o SQL Server mantém o snapshot de banco de dados no ponto do tempo em que osnapshot foi criado, o volume de dados que existia no banco de dados de origem será o tama-nho máximo do snapshot no momento de sua criação.

Revertendo dados com um snapshot de banco de dadosComo um snapshot de banco de dados contém, no momento de sua criação, todos os

dados do banco de dados de origem, você pode usá-lo pararetoÍnar o banco de dados de

origem para o estado contido no snapshot. Em casos extremos, você pode usar o snap-shot de banco de dados para retornar todo o conteúdo do banco de dados de origem parao estado do snapshot. Por exemplo, se você precisar descartar toda alteraçãto ocorridadentro do banco de dados desde que o snapshot de banco de dados foi criado.

Uma reversão de banco de dados é uma categoria especial de restauração de dados quepode ser executada quando você tiver criado um snapshot de banco de dados.

Se você precisa reverter apenas uma linha ou parte de um banco de dados, pode usar umainstrução INSERT, UPDATE, DELETE ou MERGE. Se necessário, o SQL Server tambémpermite rcverter o banco de dados inteiro usando o snapshot do banco de dados. Quandovocê usa o snapshot do banco de dados para reverter o banco de dados inteiro, o banco de

dados de origem volta exatamente para como estava no momento em que o snapshot foicriado. Todas as transações executadas no banco de dados de origem são perdidas.

A sintaxe para reverter um banco de dados a partir de um snapshot de banco de dados é:

RESTORE DATABASE <nome_banco_de_dados> FR0M DATABASE_SNAPSHOT = <nome_

snapshot_ banco de dados>

Quando você reverte um banco de dados de origem existem várias restrições:

r Pode existir apenas um snapshot de banco de dados par.:a-obanco de dados de origem.

r Os catálogos full text no banco de dados de origem devem ser eliminados e entáorecriados, depois que a reversão terminar.

Page 268: Livro_SQL

r Como o log de transação é reconstruÍdo, o encadeamento de logs de transaçáo é

desfeito.

I o banco de dados de origem e o snapshot de banco de dados frcam offline duranteo processo de reversão.

I O banco de dados de origem não pode ser ativado para FILESTREAM.

',Q o'to DE E*AME

Capítulo 9 r Fazendo Backup e Restaurando um Banco de Dados

Você precisa saber que FILESTREAM não é compatível com snapshots de banco de dados.Embora você possa criar um snapshot em um banco de dados ativado para FILESTREAM, nãopode usar o snapshot como origem para uma operação RESTORE DATABASE.

t'teste rápido

1. Quais dois recursos são incompatíveis com snapshots de banco de dados?

2. Antes de reverter um banco de dados usando um snapshot de banco de dados,o que você deve fazer?

Respostas

1. FILESTREAM e índices full text.

2. Você deve eliminar todos os snapshots de banco de dados, exceto o que estásendo utilizado como origem parao comando RESTORE.

PRÁTlcA Criando um snapshot de banco de dados

Neste exercício, você vai criar um snapshot de banco de dados no banco de dadosAdventureWorks.

1. Execute o código a seguir:

CREATE DATABASE Adventurelr/orksSnap ON

(NAME = N'AdventureWorks2OOS_Data', FILENAME = N'c:\test\Adventu rel{orks. ds' ),(NA[4E = N'S AdventurelforksFT', F]LENAME = N'C:\test\AdventureWorksFT.ds')AS SNAPSHOT 0F Adventurel,rforksGO

2. Execute o código a seguir para comparar as estruturas do banco de dados de origeme do snapshot de banco de dados. observe o valor na coluna source database id de

master.sys.dalabase:

SELECT * FROM Adventurel¡/orks.sys.databases-fjlesSELECT * FROM Adventureì¡lorksSnap. sys.databases-fjlesSELECT * FROM master.sys.databasesGO

3. Expanda o nóDatabase Snapshots no Object Explorer paravü o novo snapshot de

banco de dados que você acabou de criar.

267

Page 269: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

4. Execute uma instruçâo SELECT no snapshot de banco de dados e compare os resul-tados com o banco de dados AdventureWorks.

Faça uma alteração nos dados e compare os resultados entre o snapshot de bancode dados e o banco de dados AdventureWorks.

5.

Resumo da lição

r Um snapshot de banco de dados éuma cópia somente leitura de um banco de dadosem um ponto no tempo.

r O recurso Database Snapshots não é compatível com FILESTREAM ou índices fulltext.

I Você pode reverter um banco de dados a partir de um snapshot de banco de dados.

Revisão da lição

Responda a pergunta a seguir para testar seu conhecimento sobre aLiçáo 3. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. Um snapshot de banco de dados pode ser criado em qual banco de dados? (Escolhatodas as respostas que se aplicam. Cada resposta é.uma solução completa.;

A. mestre

B. Um banco de dados com índices full text

C. Um banco de dados com dados FILESTREAM

D. dístnbuiç,ão

Page 270: Livro_SQL

Revisão do capítuloPara reforçar o que aprendeu neste capítulo, você pode:

I Ler o resumo do capítulo.

r Examinar a lista de termos-chave introduzidos neste capítulo.

r Completar o cenário de caso. Esse cenário abotda situações reais que envolvem os

tópicos deste capítulo e solicita que você crie uma soluçáo.

r Completar as práticas sugeridas.

a Fazer um teste.

Resumo do capítulor Os backups são a apólice de seguro de seus dados. Embora você espere nunca ter

de usar um backup, no caso de um desastre os backups permitem recuperar seusbancos de dados e continuar as operações empresariais.

r A primeira operaçáo que deve ser executada durante um processo de restauração é

fazer o backup do final do log.

r Toda restauraçáo começa com um backup completo, de arquivo ou de grupo dearquivos.

I Você pode criar backups de log de transaçáo para um banco de dados que esteja nomodelo de recuperação Completo ou Registro em massa.

r Você pode restauraÍ atéûm ponto no tempo usando um backup de log de transaçáo;no entanto, você não pode restaurar atéum ponto no tempo durante o qual umatransaçáo minimamente registrada estava em execuçáo.

Termos-chaveVocê sabe o que estes termos-chave significam? Conflra suas respostas consultando oglossário no final do livro.

r Reversão de banco de dados

r Backup diferencial

r Backup completo

r LSN (Log Sequence Number)

r Restauraçáo online

I Corrupção depâgina

r Backup parcial

r Restauração parcial

r Backup do final

r Backup de log de transaçáo

r Encadeamento de logs de transação

Capítulo 9 I Fazendo Backup e Restaurando um Banco de Dados 269

Page 271: Livro_SQL

270

Cenário de caso

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

No cenário de caso a segui¡ você vai aplicat o que aprendeu neste capítulo. As resposlasdessas questões podem ser encontradas na seção "Respostas", no final deste livro.

€enário de caso: Projetando uma estratégiade backup para a €oho Vineyard

Histórico

Visão geral da empresa

A Coho Vineyard foi fundada em 7947 como uma vinícola regional dirigida por umafamilia. Graças aos vinhos premiados que tem produzido nas últimas décadas, a Coho

Vineyard teve crescimento significativo. Para continuar expandindo, a empresa adquiriuvárias outras vinícolas com o passar dos anos. Atualmente, a empresa possui 16 viní-colas; 9 estão em Washington, Oregon e Califórnia, e as 7 restantes estáo localizadasem Wisconsin e Michigan, todas nos EUA. As vinícolas empregam 532 pessoas, 1.62

das quais trabalham no escritório central, que abriga servidores fundamentais para onegócio. A empresa tem 122 vendedores que viajam pelo mundo e precisam acessarinformações de estoque atuaTizadas.

Mudanças planejadas

AÍé agoru, cada uma das 16 vinícolas pertencentes à Coho Vineyard tem um site sepa-

rado em suas instalações. A Coho Vineyard quer consolidar a presença na Web dessas

vinícolas para que os visitantes dos sites possam comprar produtos de todas as 16

vinícolas aparíir de uma inicaloja online. Todos os dados associados a esse site serãoarmazenados em bancos de dados no escritório central.

Quando os dados forem consolidados no escritório central, será usada replicação pormesclagem (merge) para fornecer dados para os vendedores e permitir que eles in-siram pedidos. Para satisfazer as necessidades dos vendedores afê, que o projeto de

consolidação esteja concluído, dados de estoque de cada vinícola serão enviados parao escritório central ao final de cada dia. A replicação por mesclagem (merge) foi im-plementada para permitir que os vendedores mantenham cópias locais de dados docliente, do estoque e de pedidos.

Ambiente de dados existente

Bancos de dados

,ttualmente, cada vinícola mantém seu próprio banco de dados para armazenaÍ lo-das as informações empresariais. Ao final de cada mês, essas informações sáo îa-zidas para o escritório central e transferidas para os bancos de dados mostrados naTabela 9-2.

Depois que o projeto de consolidação do banco de dados estiver concluído, um novobanco de dados, chamado Order, servirá como data warehouse para a nova loja da Web.

Como parte de seu trabalho diârio, os funcionários também se conectaráo periodicamen-te no banco de dados order usando um novo aplicativo Web interno.

Page 272: Livro_SQL

Tabela 9-2 Bancos de dados da Coho Vineyard

Customer

Accounting

capítulo 9 I Fazendo Backup e Restaurando um Banco de Dados 271

lnventory

Promotions

O banco de dados HR contém dados sigilosos e é protegido com TDE (TransparentData Encryption). Além disso, os dados da tabeTa Salary sáo criptografados usandoum certificado.

Servidores de banco de dodos

Um único servidor, chamado DB1, contém todos os bancos de dados no escritório central.

DB1 está executando SQL Server 2008 Enterprise no Windows Server 2003 Enterprise.

Requisitos empresar¡a¡sVocê precisa projetar uma solução de arquivamento para os bancos de dados Customer

e Order. Sua estratégia de arquivamento deve permitir que os dados de Customer seiam

guardados por seis anos.

Pala preparar o banco de dados Order para os procedimentos de arquivamento, você cria

uma tabela particionada chamada Order.Sales. Order.Sales inclui duas partições. A partição

1 inclui atividade de vendas do mês corrente. A partição 2 é. usada para atmazenar alivida-de de vendas do mês anterior. Os pedidos feitos antes do mês anterior devem ser movidos

para outra tabela particionada, chamada Order.Archive. A partição 1 de Order.Archive incluitodos os dados arquivados. A partição 2 permaîece vazia. Os dados de arquivamento de-

vem residir em um gupo de arquivos diferente dos dados ulilizados ativamente.

Um processo precisa ser criado para carcegar os dados de estoque de cada uma das 16

vinícolas, diariamente, às 4h00min.

Quatro grandes clientes enviam pedidos usando o esquema XML (Extensible MarkupLanguage) da Coho Vineyard paratraîsações EDI (Electronic Data Interchange). Os ar-

quivos EDI chegam às 17hOOmin e precisam ser analisados e carregados nos bancos de

dados Customer, Accountíng e Inventory , cada um dos quais contém tabelas relevantesparafazer um pedido. Atualmente, a rotina de importaçáo EDI é um aplicativo em C++de um thread que leva entre três e seis horas para processar os arquivos. Você precisa

concluir o processo EDI às 1.7h30min para satisfazer o acordo de atendimento SLA

(Service Level Agreement) fechado com os clientes. Depois que o projeto de consolidaçáo

tiver terminado, a rotina EDI carregará todos os dados no novo banco de dados Order.

Você precisa fazer o backup de todos os bancos de dados em todos os locais. É obfiga-tório que todos os bancos de dados de produção sejam configurados com o modelo de

recuperação Completo. No cenário de pior caso, você pode perder no máximo cinco mi-nutos de dados. Os bancos de dados Customer, Account,Inventory, Promot[ons e Order

L80 megabytes (MB)

5OO MB

l_00 MB

250 MB

80 MB

Page 273: Livro_SQL

272 Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 200g

podem ficar rora do ar no máximo por 20 minutos, no caso de um desastre. os dadoscom mais de dois meses nos bancos de dados Customer e order podem ficar fora d,o arpor até 12 horas no caso de um desastre.

Responda as perguntas a seguir:

1. ouais backups você precisa fazer para os bancos de dados Account, Inventory ePromotíons?

2. Qual backup você precisa razer para os bancos de dados customer e ord.e/?

3. Qual backup você precisa fazer para o banco d,e d,ados HR?

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

Fazendo backup de um banco de dadosI Exercício 1 crie um certificado. crie uma tabela que contenha dados criptografa-

dos pelo certificado. Faça backup do certificado, ;unto com a chave pivad,à. 'l Exercício 2 crie um banco de dados com vários grupos de arquivo. Faça backup

do banco de dados inteiro usando backups de gru"po äe arquivos, diferencial e delog de transação.

Restaurando um banco de dadosr Exercício I Restaure um certificado e a chave privad,a a partir de um backup. veri-

fique se você consegue descriptog . ¡far os dados de sua t;bela usando o certificadorestaurado.

r Exercício 2 Pratique a restautaçã.o do banco de dados em diferentes pontos notempo, usando os backups de grupo de arquivos, diferencial e de log A.irunráçáãque você criou na prática "Fazendo backup de um banco de dados".

Faça um testeos testes do cD deste livro (em inglês) oferecem muitas opções. você pode fazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-ficaçã'o 70-432. É possível configarar o teste para que ele simule a experiência de fazerum exame de certificaçã,o ou configurâ-Io no modode estudo (study mode) para ver asrespostas coftefas e explicações depois de cada questão.

MA|S TNFORMAçöES Testes

Para mais detalhes sobre todas as opções de testes disponíveis, consulte a seção ,,Como utilizar

os testes" na lntrodução deste livro.

Page 274: Livro_SQL

Automati

Para garantir que seus dados estejam protegidos, você precisa criar backups frequen-temente. Além disso, você precisa executar várias rotinas de manutenção de banco dedados, como reindexar bancos de dados, diminuir arquivos e expandir bancos de dados.Neste capítulo, você vai aprender a criar e agendar jobs dentro do SQL Server Agent.Você também vai aprender a configurar alertas para notificátJo de problemas que ne-cessitam de atenção ou pan executar rotinas para corcigir problemas antes que ocoÍrauma interrupção.

Objetivos de exame neste capítulo:

I Gerenciarjobs do SQL ServerAgent.

r Gerenciar alertas do SQL ServerAgent.

I Gerenciar operadores do SQL ServerAgent.

¡ Identificar problemas de execução de job do SeL Agent.

Liçöes deste capítulo:

r Lição 1: Criando jobs 274

r Liçáo 2: Criando alertas 282

Antes de começarParc fazer as lições deste capítulo, você deve ter:

I o Microsoft SQL Server 2008 instalado

r o banco de dadosAdventureWorþs instalado dentro da instância

Page 275: Livro_SQL

274

Lição 1: Criando jobs

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

O SQL Server Agent fornece um mecanismo de agendamento para o SQL Server. Sem

o SeL Server Agent, você teria que instalar um mecanismo de agendamento separado

ou os administradores teriam que se lembrar de executar jobs em vários momentos ao

longo do dia.

Os jobs fornecem o contêiner de execuçáo que permite reunir uma ou mais etapas de

um processo que precisa ser executado. Embora muitos jobs que você crie tenham so-

mente uma tarefa, o SQL Server permite criar jobs compostos de várias larcfas, pataas quais podem ser configuradas várias ações, dependendo de as tarefas serem bem-

sucedidas ou falharem. Cadatarcla ou unidade de job a ser executada está contida em

uma etapa do job.

Após esta lição, você será capaz de:

I CriarjobsI Criar operadores

I Ver o status e o histórico do job

Tempo estimado para a lição: 20 minutos

Etapas de jobAs etapTs dejob Çob steps) sáo os elementos de execuçáo dentro de um job. Os tipos de

etapas de job que podem ser executados são:

I Transact-SQl (T-SQL)

r Tarefas de replicação

r Tarefas de sistema operacional ou arquivos executáveis

I Tarefas de Analysis Services

r Pacotes de Integration Services

r Scripts ActiveX

Assim como qualquer código executável, cada etapa de job ê, executada sob um contexto

de segurança. o contexto de segurançapadrão pa:øvma elapa dejob corresponde ao

login definido como proprietário do job. Você também pode anular o contexto de segu-

rança, especificando uma conta proxy que o SQL Server Agent uliliza parc a etapa de

job com base nas credenciais atribuídas para essa conta.

Além dos comandos a serem executados, rtma eÍapa de job pode ser configurada com:

r Registro

r Notificação para um operador

I Configurações de repetição que especificam o número de vezes para repetir uma

etapa, assim como o número de minutos entre as repetições

I Lógica de fluxo de controle

Page 276: Livro_SQL

As opções de fluxo de controle permitem especificar uma ação com base no sucesso ounafalha, como segue:

r Encerrar o job relatando sucesso

r Encerrar o job relatando falha

a ft para a próxima etapa

r Ir para um número de etapa específico

o registro pode ser direcionado para um arquivo que é sobrescrito sempre que a etapaé executada ou você pode anexar em um arquivo já existente. Você também pode regis-ttar a saîda da etapa em uma tabela, embora isso geralmente não seja recomendado,devido à sobrecarga extra de registrar em uma tabela em relação aregisftar em umarquivo de texto.

Capítulo 10 r Automatizando o SQL Server

MELHoRES PRÁTtcAs Registrando etapas de jobToda etapa de job criada deve ser configurada para registrar em um arquivo. A maneiramais comum de configurar o registro é criar um novo arquivo de log na primeira etapa deum job e, em seguida, cada etapa de trabalho subsequente anexa informaçöes no arquivode log.

Agendas de jobApós ter adicionado uma ou mais etapas em seu job, você está pronto para especificaruma agenda. As agendas são definidas e armaz,enadas como objetos independentes,permitindo definir uma agenda única que pode ser aplicada a vários jobs.

Uma agenda de job pode ser criada através da caixa de diálogo Manage Schedules oudurante a criaçã,o de um job. Algumas das propriedades que você pode configurar parauma agenda são:

r Tipo de frequência; por exemplo, dîâria, semanal ou mensal

I Recorrência dentro de uma repetição diâria, semanal ou mensal; por exemplo, acada terceiro dia de cada segundo mês para um tipo de frequência mensal

r Recorrência dentro de um dia, com base em minutos ou horas

r Hora de início e fim

a Dafa de início e fim para que a agenda seja válida

Por exemplo, você poderia cúar uma agenda para ser executada na primeira segunda-feira de cada terceiro mês e, enfão, a cada 15 minutos entre as OShOOmin e 19hOOmin.

275

Histórico de jobQuando um job é executado, os erros ou mensagens são enviados para o arquivo de logou tabela especiflcada para cada etapa, permitindo que você examine o arquivo de logno caso de ocorrer um erro de execução de job.

Page 277: Livro_SQL

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Além do registro configurado para uma etapa de job, sempre que um job é executado,

o SQL Server registra informações na tabela dbo.sysjobhistory, no banco de dados

msdb, para cada etapa de job executada dentro do job. Algumas das informaçõesregistradas sáo:

r Etapa de job

T

III

Status

Data e hora de execução

Duração

Se ocorrer um erro, o número, a gravidade e o texto daúltima mensagem de errogerada

@ DICA DE EXAME

Você precisa saber onde encontrar informaçöes para diagnosticar a causa de um erro em uma

etapa dejob.

OperadoresOperador é um nome alternativo paÍavmapessoa, grupo ou dispositivo. Os operadores

sáo usados para enviar notificações quando jobs falham ou um alerta é gerado. Para

cada operador, você especifica um nome, junto com informações de contato, como umendereço de e-mail, número de pager ou endereço NET SEND. Além disso, você pode de-

signar qual dia (ou dias) e operador (ou operadores) estáo disponíveis e a hora de inícioe fim de um dia de trabalho.

NOTA Entendendo a semana de trabalho padrão

A hora de início e fim de um dia de trabalho é baseada na semana de trabalho padrão, de

segunda-feira a sexta-feira, dos EUA e não se adapta a nenhuma outra definição de semana

de trabalho.

tlrteste rápido

1. Se um job falha, onde você olha para diagnosticar o problema?

2. Quais tipos de etapas de job podem ser executados?

Respostas

1. O primeiro lugar a olhar é no histórico de job, que pode ser acessado a partirdo SSMS (SQL Server Management Studio), clicando com o botão direito do

mouse em um job e selecionando View History. Você também pode examinaros arquivos de registro que sáo configurados para cada etapa de job. Em al-guns casos, você poderá encontrar informações adicionais nos logs de evento

do Microsoft Windows.

2. Yocê pode criar jobs que executam T-SQL, scripts ActiveX, comandos de siste-

ma operacional ou arquivos executáveis. Você também pode configuÍat tare-

fas específicas de replicação, Analysis Services e Integration Services.

Page 278: Livro_SQL

PRÁTlcA Criando jobs e operadoresNos exercícios a seguir, você vai definir um operador pan o SQL Server notificar. Vocêtambém vai uiar um job para reindexar o banco de dados AdventureWorþ,s .

Neste exercício, você vai ctiar um operador que, subsequentemente, serâ usado panenviar notificações de jobs e alertas.

1. No SQL Server Management Studio, expanda o nó SQL Server Agent, clique com obotão direito do mouse em Operators e selecione New Operator.

2. Dê um nome ao operador e especifique um endereço de e-mail, como mostradoaqui.

Capítulo l-0 r Automatizando o SQL Server 277

3. Clique em OK e examine o operador que acabou de ser criado.

Neste exercício, você vai criar um job para reindexar o banco de dados AdventureWorþs.

1. Execute o código a seguir no banco de dados AdventureWorks para criar um proce-dimento armazenado (stored procedure) para reindexar tabelas:

CREATE PR0CEDURE dbo.asp_reindex @database SYSNAME, @fragpercent INTAS

DECLARE @cmd NVARCHAR(nax),@table SYSNAME,

@schema SYSNAME

Page 279: Livro_SQL

278 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

--Usando um cursor para propósitos de demonstração.--Também poderia fazer isso com uma variável de tabela e um loop hlHfLE

DECLARE curtab'le CURSOR FOR

SELECT DISTINCT 0BIECT_SCHEMA_NAME(object_id, database_id)SchemaName,

0Bl ECT_NAME (obj ect_i d , database-i d) Tabl eName

FROM sys . dm_db_i ndex-physì cal_stats (DB-ID (@database), NULL, NULL, NUL

L,,SAMPLED')t,tlHERE avg_fragmentation_i n_percent >= @fragpercent

FOR READ ONLY

OPEN cu rtab'l e

FETCH curtable INTO @schema, @table

hIHÏLE @@FETCH-STATUS = O

BEGIN

SET @cmd = 'ALTER INDEX ALL 0N

+ @table+ ' REBUILD I¡rIITH (ONLINE = 0N)'

--Tenta construção 0NLINE primeiro, se falhar, muda para construçãoOFFLINE.

BEGIN TRY

EXEC sp-executesql @cmd

END TRY

BECIN CATCH

BEGIN

SET @cmd = 'ALTER INDEX ALL 0N ' + @database + '.' + @

schema + ','+ @table + ' REBUILD WITH (ONLINE = OFF)'

EXEC sp_executesql @cmd

END

END CATCH

FETCH curtable INTO @schema, @tableEND

CLOSE curtableDEALLOCATE curtableGO

Abaixo do SQL Server Agent, clique com o botão direito do mouse no nó Jobs e sele-

cione New fob.

Dê um nome ao novo job, configure o ptoprietário como .ta, selecione DatabaseMaintenance para a calegoria de job e adicione uma descrição, como mostradoaqui.

2.

5.

Page 280: Livro_SQL

Capítulo 10 r Automatizando o SQL Server

4.

5.

Selecione apágiîa Steps e clique em New para abrir a caixa de diálogo New Job Step.

Especifique um nome paraa etapa, selecione Transact-SQl para o tipo de etapa,deixe Run As em branco, digite AdventureWorks como nome em Database e digiteo comando SQL mostrado aqui para o procedimento de reindexaçáo que você criouno exercício anterior.

279

Page 281: Livro_SQL

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

6. Selecione a pâgina Advanced e especifique o arquivo de saída C:\Test\Dailymain-tenance.txt parafazü o registro. Clique em OK.

Selecione a pâgina Schedules e clique em New para definir uma nova agenda di-ária, como mostrado aqui, e clique em OK para fechar a caixa de diálogo New JobSchedule.

7.

8.

9-

Clique em OK para salvar o novo job e fechar a caixa de diálogo New Job.

Expanda lobs. Clique com o botão direito do mouse no job Re-index Databases e

selecione Start. Quando o job tiver terminado, examine o histórico de execução e oarquivo de registro.

Resumo da lição

I Operador é um nome alternativo paÍauma pessoa, grupo ou dispositivo que vocêdeseja que seja o alvo de notificações.

t Um job pode ser criado contendo várias etapas, com dependência de fluxo de con-trole, registro e uma ou mais agendas.

Revisão da lição

Responda a pergunta a seguir para testar seu conhecimento sobre a Liçáo 1. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisála em formatoeletrônico.

Page 282: Livro_SQL

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas", no final dolivro.

1. Onde você olharia para encontrar uma lista de jobs que falharam?

A. No log de eventos do Windows

B. No histórico de trabalho no SSMS

C. No log de erros do SQL ServerAgent

D. No log de erros do SQL Server

Capítulo L0 r Automatizando o SQL Server 28L

Page 283: Livro_SQL

Lição 2: Criando alertas

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

os alertas oferecem a capacidade de enviar notificações ou executar ações com base emeventos ou condiçóes que ocorrem dentro da instância do SQL Server ou na máquina emque a instância eslâ.

Após esta lição, você será capaz de:

I Criar alertas

Tempo estimado para a lição:20 minutos

Alertas do SQL Server AgentOs alertas podem ser configurados como um dos três tipos a seguir:

r Um evento do SQL Server

r Um alerta de condição de desempenho

I Um evento de WMI (Windows Management Instrumentation)

Um alerta égerado para um evento do SQL Server com base em um número de erro ouem um nível de gravidade de erro. Além disso, você pode restringir o alerta a um bancode dados especÍfico ou a uma string de texto específica dentro de uma mensagem de

erro. Quando um alerta de evento do SQL Server é gerado, o SQL Server Agent percorre olog de eventos do Windows Application para proclJÍar correspondências aos critérios de

evento que você tiver definido. Por exemplo, você poderia disparar um alerta sobre umagravidade de erro 22 paru notificar um operador de que uma tabela é suspeita.

Os alertas de Condição de Desempenho são definidos em conÍadores do System Monitor.Quando o alerta é definido, você especifica o objeto, contador e instância que desejamonitorar, junto com a especificaçáo de uma condição para o valor do contador e se oalerla deve ser disparado quando o contador for maior, menor ou igual ao valor especi-ficado. Por exemplo, você poderia disparar um alerta para noíificâ-lo quando a quanti-dade de espaço livre em disco cair abaixo de 750/0.

Um alerta para um evento de WMI permite enviar alertas com base nos eventos que

ocorrem no servidor que contém a instância do SQL Server. Sempre que um eventoocorre na máquina (por exemplo, a pTaca de rede é desconectada, um arquivo é uiado,um arquivo é excluído ou há uma gravaçáo no registro), um evento de WMI é gendodentro Windows. Um alerta de WMI configura um receptor na infraestrutura WMI paradisparar o alerta quando o evento do Windows ocorrer.

Cada alerta pode ser configurado com uma resposta. As respostas disponíveis são:

r Executar job

r Notificar operador

Page 284: Livro_SQL

Especiflcando um job a ser executado quando um alerta for gerado, você pode configu-rar seu ambiente paÍa capíxar e tentar corrigir os erros automaticamente, eliminando anecessidade de um administrador responder aos eventos de rotina.

@ o,.o DE EXAME

Você precisa saber os tipos de alertas que podem ser definidos no SQL Server e os critérios deresposta que podem ser especificados para um alerta.

{F t"rt" rápido

Capítulo L0 r Automatizando o SQL Server

7.

2.

Quais são os três tipos de alertas que podem ser criados?

Quais sáo as duas ações de resposta que podem ser configuradas para uma7efia?

Respostas

1. Você pode criar alertas sobre contadores de desempenho, erros do SQL Servere consultas WMI.

2. Yocê pode fazer um alerta enviar uma notificação ou executar um job em res-posta à condição de alerta.

PRÁTtcA Criando alertasNos exercícios a seguir, você vai cîiar alertas para enviar notificações quando estiverficando sem espaço no 1og de transação e quando ocorrer um erro de nivel 22.

283

Neste exercício, você vai criar um alerfa para enviar uma notificação quando a porcen-tagem do espaço no log de transação utilizada para o banco de dados AdventureWorkspassar de 90o/o.

1. No SQL Server Management Studio, abaixo de SQL Server Agent, clique com o bo-táo direito do mouse em Alerts e selecione New Alert.

2. Dê um nome ao alefia e, na lista suspensa Type, selecione SQL Server PerformanceCondition Alert.

5. Na lista suspensaObject, selecione o objeto SQlServer:Databases. Na lista suspen-sa Counter, selecione Percent Log Used. Selecione a instãncia AdventureWorks nalista suspensa Instance e conftgure o alerta para quando o contador passar de 90,selecionando Rises Above na lista suspensa Alert If Counter e digitando 9O na caixade texto value.

Page 285: Livro_SQL

284 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

4. Selecione apâgina Response, marque acaixa de seleção Notiff Operators e marqueas caixas de seleção das opções de notificaçáo para seu operador.

Selecione a pâgina Options e marque a caixa de seleção E-mail para incluir o textode erro do alerta. Clique em oK.

5.

Neste exercício você vaicriar um alerta de SOL Server Event.

1. Clique com o botão direito do mouse em Alerts e selecione New Alert.

2. Dê um nome ao alefia, digitando-o na caixa de texto Name, e selecione SQL ServerEvent Alert na lista suspensa Type.

3.

4.

Especifique All Databases e a gravidade de erro 22, como mostrado aqui.

Selecione apâgina Response, marque a caixa de seleçáo Notifu Operators e selecio-ne as opções de notificação para seu operador.

5. Selecione apâgina Options e marque a caixa de seleção E-mail para incluir o textode erro do alerta. Clique em oK.

Page 286: Livro_SQL

Capítulo 10 r Automatizando o SQL Server

Resumo da lição

r Suando ocorre um evento, os alertas permitem notificar operadores, assim comoexecutar jobs para corcigir problemas.

Revisão da lição

Responda a pergunta a seguir paraleslar seu conhecimento sobre aLiçã,o 2. Aperguntatambém está disponível no CD do livro (em inglês) se você preferir rcvisâ-la em formatoeletrônico.

285

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas", no final dolivro.

1. Seu banco de dados Orders falhou na noite passada e você determinou que a falhafoi causada por um arquivo de dados que ficou sem espaço. Qual ferramenta vocêusa para enviar uma notificação para um administrador, assim como para expandiro arquivo de dados antes que ele fique sem espaço?

A. SQL ServerAgent

B. System Monitor

C. Event Viewer

D. Nenvork Monitor

Page 287: Livro_SQL

Revisão do capítulo

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Para reforçar o que aprendeu neste capítulo, você pode:

r Ler o resumo do capítulo.

r Examinar a lista de termos-chave intoduzidos neste capítulo.

t Completar o cenário de caso. Esse cenário abotda situações reais que envolvem os

tópicos deste capítulo e solicita que você crie uma soluçáo.

I Completar as práticas sugeridas.

a Fazer um teste.

Resumo do capítuloI O SQL Server Agent fornece um mecanismo de agendamento que pode ser usado

para executar jobs.

r Os jobs podem ter uma ou mais etapas, com dependências de fluxo de controlebâ-sicas, registro, notiflcação e uma ou mais agendas de execução.

I Operadores são usados para encapsular as configuraçóes utilizadas para enviaruma notificação para uma pessoa, grupo ou dispositivo.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando o

glossário no final do livro.

¡ Alerta

r EÞpa de job

r Operador

Cenário de caso

No cenário de caso a segui¡ você vai aplicar o que aprendeu neste capÍtulo. As respostas

dessas questões podem ser encontradas na seção "Respostas", no final deste livro.

Cenário de caso: Projetando uma estratégiade automação para a Coho Vineyard

Histórico

Visõo geral da empresa

A Coho Vineyard foi fundada em 1947 como uma vinícola regional dirigida por umafamília. Graças aos vinhos premiados que tem produzido nas últimas décadas, a Coho

Page 288: Livro_SQL

Vineyard teve crescimento significativo. Pata continuar expandindo, várias vinícolasforam adquiridas com o passar dos anos. Atualmente, a empresa possui 16 vinícolas;9 estáo em Washington, Oregon e Califónia, e as 7 Íestantes estão localizadas em Wis-consin e Michigan, todas nos EUA. As vinícolas empregam 532 pessoas, 162 das quaistrabalham no escritório central, que abriga servidores fundamentais para o negócio. Aempresa tem 722 vendedores que viajam pelo mundo e precisam acessar a disponibili-dade de estoque atualizada.

Mudonças planejadas

hté agora, cadauma das 16 vinícolas pertencentes à Coho Vineyard tem um site sepa-rado em suas instalações. A Coho Vineyard quer consolidar a presença na Web dessasvinícolas paraque os visitantes dos sites possam comprar produtos de todas as 16vinícolas a partir de uma únicaloja online. Todos os dados associados a esse site seráoatmazenados em bancos de dados no escritório central.

Quando os dados forem consolidados no escritório central, será usada replicação mergepara fornecer dados para os vendedores, assim como para permitir que eles insirampedidos. Para saÍisfazer as necessidades dos vendedores até que o projeto de consolida-çâo esteja concluído, dados de estoque de cada vinícola sáo enviados para o escritóriocentral ao frnal de cada dia.

Ambiente de dados existente

Bancos de dados

Atualmente, cada vinícola mantém seu próprio banco de dados para armazenat todas asinformações empresariais. Ao final de cada mês, essas informações são frazidas para oescritório central e transferidas para os bancos de dados, mostrados na Tabela 1O-1.

Tabela 10-1 Bancos de dados da Coho Vineyard

Capítulo L0 r Automatizando o SQL Server 287

Customer

Accounting

HR

lnventory

Promotions

Depois que o projeto de consolidação do banco de dados estiver concluído, um novobanco de dados, chamado Order, servirácomo data warehouse para a nova loja da Web.Como parie de seu trabalho diánto, os funcionários também se conectarão periodicamen-te no banco de dados Order usando um novo aplicativo Web interno.

O banco de dados HR contém dados sigilosos e é protegido com TDE (TransparcîtDataEncryption). Além disso, os dados da tabela Salary são criptografados usando um cer-tificado.

1-80 megabytes (MB)

5OO MB

1OO MB

250 MB

80 MB

Page 289: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Servidores de banco de dados

Um único servidor, chamado DB1, contém todos os bancos de dados no escritório cen-

tral. DB1 está executando SQL Server 2008 Enterprise no Windows Server 2003, ediçáoEnterprise.

Requisitos empresar¡a¡sVocê precisa projetar uma soluçáo de arquivamento para os bancos de dados Customere Order. Sua estratégia de arquivamento deve permitir que os dados de Customer sejamguardados por seis anos.

Para preparar o banco de dados Order pan os procedimentos de arquivamento, você criauma tabela particionada chamada Order.Sales. Order.Sales inclui duas partições. A par-tiçáo 1 inclui atividade de vendas do mês corrente. A partição 2 éusadapara armazenaratividade de vendas do mês anterior. Os pedidos feitos antes do mês anterior devem sermovidos para outra tabela particionada, chamada Order.Archive. A partição 1 de Order.

Archive inclui todos os dados arquivados. A partição 2 permanecevazia.

Um processo precisa ser criado paÍa carcegar os dados de estoque de cada uma das 16

vinícolas, diariamente, às 4h00min.

Quatro grandes clientes enviam pedidos usando o esquema XML (Extensible MarkupLanguage) da Coho Vineyard para transações EDI (Electronic Data Interchange). Os ar-quivos EDI chegam às 17h00min e precisam ser analisados e carregados nos bancos de

dados Customer, Accountíng e Inventory, cada um dos quais contém tabelas relevantesparafazer um pedido. Atualmente, arctina de importaçáo EDI é um aplicativo em C+ +de um thread que leva entre três e seis horas para processar os arquivos. Você precisaconcluir o processo EDI às 17h30min para satisfazer o acordo de atendimento SLA(Service Level Agreement) fechado com os clientes. Depois que o projeto de consolidaçãotiver terminado, a rotina EDI carregará todos os dados no novo banco de dados Order.

Você precisa fazer o backup de todos os bancos de dados em todos os locais. No cenáriode pior caso, você pode perder no máximo cinco minutos de dados. Os bancos de dados

Customer, Account, InventoLy, Promotíons e order podem ficar fora do ar no máximo por20 minutos, no caso de um desastre. os dados com mais de seis meses nos bancos de

dadosCustomereOrder podem ficarforadoarpor até,72horas nocasodeumdesastre.

Responda a pergunta a seguir.

1. O que você configulaia para garantir que os processos administrativos fossemaûíomatizados?

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

Page 290: Livro_SQL

Criando jobsr Exercício Crie jobs para executar backups completos, diferenciais e de 1og de tran-

sação dentro de seu ambiente.

Criando alertasr Exercício Crie um alerta que seja gerado quando a unidade de disco em que estão

seus arquivos de dados tiver menos de 75o/o de espaço livre disponíveis.

Faça um teste

Capítulo L0 r Automatizando o SQL Server

Os testes do CD deste livro (em inglês) oferecem muitas opções. Você pode fazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-ficação 70-432. É possível configurar o teste para que ele simule a experiência de fazerum exame de certificaçáo ou configurâ-lo no modo de estudo (study mode) para ver asrespostas corretas e explicações depois de cada questão.

MA|S TNFORMAçÕES Testes

Para mais detalhes sobre todas as opçöes de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

289

Page 291: Livro_SQL
Page 292: Livro_SQL

Capítulo l-1

Proietando

O projeto de um sistema de segurança confiável exige a implementação de uma esftafé-gia em camadas. Esse processo é chamado de "defesa profunda" (de¡fmse ín depth) . Estecapítulo explica como se configura cada camada dentro da infraestrutura de segurançado Microsoft SQL Server pan ajudar a impedir o acesso não autoúzado aos dados.

Objetivos de exame neste capítulo:

r Gerenciar logins e roles de servidor.

I Gerenciar usuários e roles de banco de dados.

I Gerenciar permissões de instância do SQL Server.

I Gerenciar permissões de banco de dados.

I Gerenciar permissões de esquema e permissões de objeto.

I Fazer auditoria de instâncias do SQL Server.

r Gerenciar criptografia transparente de dados.

r Configurar ârea de superffcie.

Liçöes deste capítulo:

I Lição 1: TCP endpoints 292

r Lição 2:Configurando aârea de superffcie do SQL Server 299

r Liçáo 3: Criando principais 3O3

r Lição 4: Gerenciando permissões 311

r Lição 5: Auditoria de instâncias do SQL Server 324

r Lição 6: Criptografando dados 331

Antes de começarParu fazer as lições deste capítulo, você deve ter:

I uma instância do SQL Server 2008 instalada, com o exemplo de banco de dadosAdventureWorks.

Page 293: Livro_SQL

292

Lição 1: TCP endpoints

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Os endpoints controlam a capacidade de se conectar em uma instância do SQL Server,assim como determinam os métodos de comunicação aceiléNeis. Atuando de maneiramuito parecida com os firewalls na rede, os endpoints são uma camada de segurança nafronteira entre os aplicativos e a instância do SQL Server. Esta lição fornece uma visãogeral básica da arquitetura de endpoint presente no SQL Server 2008.

Após esta lição, você será capaz de:I Entender o papel dos endpoints na segurança de uma instância do SQL Server 2008

Tempo estimado para a lição: 15 minutos

Tipos de endpoint e cargas úteisUm endpoint tem duas partes básicas: um transporte e uma carga ûtil. Os endpointspodem ter dois transportes diferentes: TCP eHTTP. Os endpoints também têm uma car-ga útil que define a categoriabâsica do trâfego permitido e tem os valores SOAP, TS7L,SERVICE _BROKER e DATA,BASE

-MIRRORING.A Tabela 11-1 lista as combinações válidas de transporte e carga útil de endpoint.

Tabela 11-1 Transporte e carga útil de endpoint

TCP

TCP

TCP

HTTP

Combinando um transporte e uma cargaútil de endpoint, o SQL Server pode filtrar otâfego aceilâvel antes mesmo que um comando chegue à instância do SQL Server. Porexemplo, suponha que você tenha um endpoint definido como TCP com a carga útilTSQL. Se algum aplicativo tentasse enviar trâfego HTTP, SERVICE_BROKER ou DATA-BASE_MIRRORING aûavés do endpoint, a conexão seria negada sem necessidade deauleníicar o pedido.

Esse processo é muito parecido com o funcionamento dos firewalls em uma rede. Osadministradores de rede configuram firewalls para permitir trâfego em apenas umconjunto específico de portas TCP e UDP. Qualquer pedido tentando usar uma portaque esteja bloqueada é, rejeitado no firewall. Os endpoints agem da mesma maneira,rejeitando os pedidos que não estão formatados corretamente, com base na definiçãodo endpoint.

ISQ¿

SERVICE BROKER

DATABASE MIRRORING

SOAP

Page 294: Livro_SQL

Acesso ao endpointMesmo que o trâÍego que está indo para o endpoint corresponda ao transporte e à cargaútil corretos, uma conexão ainda não é permitida anão ser que o acesso ao endpointseja concedido. O acesso ao endpoint tem duas camadas.

A primeira camada de segurança de acesso é determinada pelo estado do endpoint. Umendpoint pode ter três estados: STARTED, SToppED e DISABLED. os três estados de umendpoint reagem como s€guê:

r STARTED O endpoint esÍâcaptando conexões ativamente e responderá a um apli-cativo.

r STOPPED O endpoint está captando ativamente, mas retorna um erro de conexãopara um aplicativo.

r DISABIED O endpoint náo capta e não responde a nenhuma conexã,o tentada.

A segunda camada de segurança é a permissão para se conectar no endpoint. Um apli-cativo deve ter um login criado no SQL Server que tenha a permissão CONNECT concedi-dapan o endpoint, antes que a conexáo pelo endpoint seja permitida.

Você pode estar se perguntando sobre todo o esforço envolvido apenas para estabeleceruma conexão com uma instância do SQL Server antes mesmo que o usuário seja au-tenticado. Nas versões anteriores do SQL Server, qualquer aplicativo podia conectar umservidor executando SQL Server e transmitir qualquer tipo de pedido. Nenhuma tentati-va eÍa feita de garantir que os aplicativos precisassem transmitir pedidos formados demaneira vâlida, de modo que era muito mais fácil invadir um servidor com SQL Server.O SQL Server 2008 garante que somente pedidos válidos possam ser enviados por umusuário válido, antes que um pedido seja agendado dentro do mecanismo. Os adminis-tradores tambêm têm um interruptor mestre para encerrar o acesso imediatamente, casopercebam que alguém eslâ tentaîdo comprometer o servidor com SQL Server, configu-nndo como DISABLED o estado do endpoint que está sendo usado.

Capítulo LL r Projetando a Segurança do SQL Server 293

TCP endpo¡ntVocê pode criar endpoints TCP (Transmission Control Protocol) com três cargas úteisdifeTentes : TS QL, DAT,ABAS E _M TRR) RIN G e S E RVI CE

-B R)KE R.

Argumentos do protocolo TCP

Você pode configurarTCP endpoints para captar endereços IP (InternetProtocol) e núme-ros de porta específicos. Os dois argumentos que você pode especificar, que são univer-sais para todos os TCP endpoints, sáo os seguintes:

. LISTENERjPORT

. LISTENER_TP

LISTENER_PORT é obrigatório. O TCP para TSQL endpotnt que é criado para cada ins-tância durante a instalação jâ estâ configurado para aporta TCP 1433 ou para o númerode porta alternativo da instância.

Page 295: Livro_SQL

294 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

MELHORES PRÁTICAS Números de porta

Como a pofta 5022 é o número de porta TCP padrão para um endpoint DATABASE_MIRRO-R/NG e 1'433 é a porta TCP para um ISQI endpoint, talvez você queira especificar um númerode porta diferente. Não utilizar o número de porta padrão ajuda a repelir hackers em potencial

- ou pelo menos torna o trabalho deles mais difícil -, exigindo que usem um scanner de por-ta, em vez de se conectarem cegamente na porta l-433 ou 5022 para um ataque de negaçãode serviço (DoS) ou outro tipo de invasão.

O argumento LISTENER_IP é opcional e pode proporcionar uma camada de seguran,ça muito poderosa para alguns tipos de aplicativos. Você pode definir um endereço IPespecífico para o endpoint captar.,\ configuração padráo é ALL, o que significa que oendpoint capta conexões enviadas para qualquer endereço IP válido configurado namáquina. Contudo, se você quiser limitar os pedidos de conexáo a uma determinadaplaca de interface de rede (NIC), pode especificar o argumento LISTENER_I?. Quandovocê especifica um endereço IB o endpoinl.capta somente os pedidos enviados paraoendereço IP especificado.

S ot.o DE ExAME

Os ISQI endpoints não têm nenhuma opção de configuração adicional, além das configura-çöes ICP universais.

Argumentos comuns de Database Mirroring e Service BrokerOs endpoints Database Mirroring e Service Broker fornecem opções para especificar ométodo de autenticação e a confïguração de criptografla. Você pode usar autenticaçáoou certificados baseados no Microsoft Windows. Você especifica autenticação baseadano Windows selecionando a opçáo NTLM, KERBEROS ou NEGOTIATE. A opção NEGO-TTATE faz com que as instâncias selecionem o método de autenticação dinamicamente.Você pode configurar a autenticaçáo baseada em certificado usando um certificado deuma autoridade confiável ou gerando seu próprio certiflcado Windows.

METHORES PRÁT|CAS Autenticação

Quando todas as instâncias de Database Mirroring e Service Broker residem dentro de umúnico domínio ou em domínios confiáveis, você deve usar autenticação do Windows. Quandoas instâncias abrangem domínios não confiáveis, você deve usar autenticação baseada emcertificado.

O SQL Server pode criptografar ïoda a comunicação entre os endpoints e você podeespecificar o algoritmo de criptografia a ser usado para a comunicação. o algoritmopadráo é o RC4, mas você pode especificar o algoritmo AES (Advanced Encryption Stan-dard), bem mais forte.

Page 296: Livro_SQL

MELHORES PRATICAS Criptografia

Use RC4 para obter força de criptografia mínima e melhor desempenho. Use AES se for ne-cessária criptografia forte, mas note que esse algoritmo exige mais sobrecarga de cálculo eafetará o desempenho.

Argumentos específicos de Database MirroringOs endpoints Database Mirroring incluem um terceiro argumento relacionado ao roledentro da sessão de Database Mirroring.

Q o,.o DE E*AME

Você pode especificar somente um ICP endpoint com a carga úft DATABASE_MIRRORINGpara cada instância de SQL Server.

Capítulo LL r Projetando a Segurança do SQL Server

Você pode especificar que um endpoint é PARTNER, WITNESS ou ALL. Um endpointespecificado como PARTNER só pode participar como principal ou como espelho. Umendpoint especificado como WIINESS só pode pafticipar como witness (testemunha).Um endpoint especificado como ALL pode ter qualquer role.

NOTA Endpoints na edição Express

Se você estiver criando um endpoint Database Mirroring no SQL Server 2008 Express, ele su-porta somente a role WITNESS.

O exemplo de T-SQL a seguir mostra como se cria um endpoint Database Mirroring:

CREATE ENDPOINT [Mirroring]AS TCP (LISTENER-PORT = 5022)FOR DATA-MIRRORINC (ROLE = PARTNER, ENCRYPT]ON = REQUIRED);

ALTER ENDPOINT [Mirrorìng] STATE = STARTED;

Esse código cria um endpoint pan aLender sessões de Database Mirroring na porta5022, respondendo aos pedidos de todos os endereços IP válidos. A opção ROLE :PARTNER especifica que o endpoint só permite que bancos de dados presentes nessainstância do SQL Server participem como principal ou espelho, usando o algoritmo de

criptografia RC4.

Argumentos específicos de Service BrokerAlém dos modos de autenticaçáo e da uiptografia, os endpoints Service Broker imple-mentam argumentos relacionados ao encaminhamento de mensagens.

fropçáo MESSAGE FORWARDING permite que as mensagens destinadas a uma instân-cia de Broker diferente sejam encaminhadas para um endereço de envio especificado.As opções são ENAßLED e DISABLED. Se a opção MESSAGE_FORW4RDING estiverconfigurada como ENABLED, você tamb ém poderâ especificar ME SSAGE _FORWAR-DING _SIZE , que define o volume de armazenamento máximo a alocat para mensagensencaminhadas.

295

Page 297: Livro_SQL

296 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Embora uma discussão completa sobre Service Broker esteja fora dos objetivos destelivro, uma breve visão geral é necessária para explicar esse comportamento. ,\s instân-cias de Service Broker processam as mensagens executando procedimentos atmazeîa-dos (stored procedures) pan fazer o trabalho de maneira assíncrona. Cada instância de

Service Broker é configurada de modo a processar mensagens de um formato em parti-cular. Contudo, é possível ter muitas instâncias de Service Broker configuradas em umambiente, cada uma das quais processando diferentes tipos de mensagens. Empregandoencaminhamento de mensagens, os administradores podem equilibrar mais facilmentea carga nas instâncias de Service Broker, sem exigir alterações nos aplicativos.

NOTA Criptografia

A criptografia de comunicação para endpoints é codificada de modo a entender a origem e odestino do tráfego. Se a comunicação ocorre inteíramente dentro da instância do SQL Servefo tráfego não é criptografado, pois isso introduziria uma sobrecarga desnecessária na comuni-cação. lsso é especialmente importante com o Service Broke[ no qual muitas mensagens sãotrocadas entre as filas dentro de uma única instância. O tráfego só é criptografado quando os

dados vão ser transmitidos para fora da instância do SQL Server.

t't"rt" rápido

1. Quais são as duas partes de um endpoint?

2. Quais sáo os três estados de um endpoint e qual é, a difercnça enfre cadaestado?

3. Que autoridade deve ser concedida antes que um endpoint permita um pedidode conexáo?

4. Quais tipos de autenticação estão disponíveis para endpoints Service Broker e

Database Mirroring?

5. Quais são os dois argumentos universais para TCP endpoints?

Respostas

1. Um endpoint tem um transporte definido como TCP ou HTTP e uma carga (ttildefinida como TSQL, S ERVICE _BROKER, DATABASE _MIRROR]NG ou S OAP.

2. Os três estados são STARIED, STOPPED eDISABLED. Um endpoiníSTARTEDcaplae permite conexões. Um endpoinlSTOPPED capta pedidos de conexãoe retorna uma mensagem de erro. Um endpoint DISABLED não responde anenhum pedido.

3. Para permitir um pedido de conexão, o login que está sendo usado deve terrecebido a permissáo CONNECT para o endpoint.

4. Podem ser especificadas as auienticações NTML ou Kerberos. Você tambémpode especificar a opção NEGOITATE, que faz o método de autenticaçáo espe-

cíflco ser negociado entre o aplicativo e o endpoint.

5. Você é obrigado a especificar uma porta para o endpoint captar. Se quiser, vocêpode configurar um endereço IP que restrinja o endpoint a responder ao lrá1e-go proveniente apenas do endereço IP especificado.

Page 298: Livro_SQL

PRÁTICA lnspecionando endpoints existentesNeste exercício você vai consultar vârias views de gerenciamento dinâmicos (DMVs)para reunir informações sobre os endpoints configurados em seu ambiente.

1. Inicie o SQL Server Management Studio (SSMS) e conecte-se em sua instância. Abrauma nova janela de consulta e execute o lote a seguir:

SELECT * FROM sys.endpointsSELECT * FROM sys.tcp_endpointsSELECT * FR0M sys.http_endpointsSELECT * FROM sys.database_mj rroring_endpo'intsSELECT * FR0M sys.servìce_broker_endpoints

2. Inspecione os resultados dos dados retornados de cada DMV

Resumo da lição

r No SQL Server, os endpoints atuam de maneira muito parecida com os firewalls,filtrando qualquer trâfego que não corresponda aos formatos permitidos.

I Cada endpoint tem um transporte que é definido como TCP ou HTTP

r Os endpoints têm uma segundaparte, chamada cargaútil, que é definida comoTSQL, DATABASE _MIRRORING, SERVICE _BROKER ou SOAP.

I Os endpoints TSQL sáo configurados durante a instalação para captar o número deporta especificado para a instância.

r Os endpoints Service Broker e Database Mirroring podem ter um método de autenti-cação especificado, assim como podem ser ativados para criptografar ßdo o trâfegoenviado, com base em um algoritmo que você define.

Revisão da lição

Responda as perguntas a seguir para leslil seu conhecimento sobre a Lição 1. As per-guntas também estáo disponíveis no CD do livro (em inglês) se você preferir revisálasem formato eletrônico.

Capítulo LL t Projetando a Segurança do SQL Server 297

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" nofinal do livro.

1. Você é o administrador de banco de dados da A. Datum Corporation. Os usuáriosestáo se queixando de que os aplicativos não conseguem se conectar no SQL Server.Você verificou todas as configurações de aplicativo e consegue conectar o servidora parlir de seu desktop usando SSMS, mas os aplicativos dos usuários continuamretornando a mensagem de erro 'Acesso negado". Qual poderia ser o problema?

A. O TCP endpoínt paraTSQL está configurado como DISABLED.

B. O TCP endpoínt para TSQL está confrgurado como STOPPED.

Page 299: Livro_SQL

298 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

C. As conexões remotas não estão ativadas.

2. Yocê configurou uma sessão de Database Mirroring dentro de seu ambiente. Osendpoints Principal e Mirror foram criados normalmente com a configuração PARTNER parc ROLE e, então, iniciados. Você verificou que pode se conectar e autenticarem cada endpoint. Contudo, o Database Mirroring não é configurado corretamente.Qual poderia ser o problema?

A. O modo de autenticaçã,o estâ configurado como NTLtuI.

B. O modo de autenticação está configurado como NEGOTIATE.

C. A configunçáo de criptografia é diferente em cada endpoint.

D. A criptografr,a estâ configurada como AES em cada endpoint.

D. Os usuários não têm permissões CONNECT para o endpoint.

Page 300: Livro_SQL

Lição 2: Configurando a área de superfície do SQt ServerCom tempo suficiente, qualquer um pode finalmente suplantar qualquer implementaçãode segurança. O objetivo da segurança é, fornecer barreiras suficientes para que o fra-balho exigido para invadir um sistema supere o beneffcio recebido. Nesta lição você vaiaprender a configurar suas instâncias de modo a expor o número mínimo possível depontos de ataque, minimizando o conjunto de recursos ativados dentro do SQL Server.

Após esta lição, você será capaz de:I Ativar e desativar recursos do SQL Server

Tempo estimado para a lição: 15 minutos

Capítulo L1 r Projetando a Segurança do SQL Server

Configuração de área de superfíc¡eUma das maneiras mais frequentes pelas quais os invasores obtêm acesso a um sistemaê, atravé,s de recursos que foram ativados, mas que raramente são usados. Atualmente,o SQL Server desativa cada recurso desnecessário para o funcionamento do mecanismode banco de dados.

No momento da instalaçáo, você pode optar por impor que os usuários sejam autentica-dos em uma instância usando somente credenciais do Windows. Se o modo de autenti-cação de sua instância estiver configurado para somente Windows, você terâ impedidoa capacidade dos usuários de utilizar logins nativos do SQL Server.

Por muitos anos, o SQL Server não teve quaisquer problemas com vírus, principalmen-te porque ninguém escrevia um vírus que atacasse especificamente o SQL Server. Hávários anos, o primeiro ataque específico ao SQL Serve¡ o Cavalo de Tróia Slammer,espalhou destruição em empresas do mundo todo dentro de poucas horas depois dolançamento. O principal problema do Slammer não era que tinha o SQL Server comoalvo, mas que os administradores tiveram diflculdade extrema para conter o Cavalo deTróia, pois milhares de cópias do SQL Server estavam instaladas em uma empresa e

náo estavam sob controle administrativo. Muitas instâncias do SQL Server eram MSDE(Microsoft Database Engine), usadas como data warehouse localpara muitos aplicati-vos. Infelizmente, toda instância do SQL Server, independente da edição, permitia abrirconexões a parlir de qualquer origem, quando na verdade poucas instâncias exigiam acapacidade de se conectar de lorma remota.

A partir do SQL Server 2005,você, pode determinar se a instância aceita conexões re-motas, configurando os protocolos de rede para acesso remoto. Porpadrão, as ediçõesque normalmente não precisam permitir conexões remotas, como o SQL Server Express,têm apenas o provedor de rede Shared Memory ativado. Se você quiser se conectar comuma instância do SQL Server de forma remota, o provedor de rede TCP/IP (TransmissionControl Protocol/lnternet Protocol) deve estar ativado.

O maior potencial de risco para uma instância é o uso de recursos que expõem umainterface externa ou a capacidade de execuçáo com fins específicos. Os dois recursos

299

Page 301: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

com maior risco são OPENROWSET/OPENÐATASOURCE e procedimentos de automa-ção de OLE.

Você ativa e desativa recursos do SOL Server usando sp_configure. Os recursos quedevem estar desativados, a náo ser que você precise da funcionalidade específica, sáoos seguintes:

r Consultas ad hoc distribuídas

r CLR ativado

I CDOC (Cross Database Ownership Chaining)

r Database Mail

I Gerenciamento de chaves estrangeiras

I Nível de acesso a Filestream

I Procedimentos de automaçáo de OLE

I Conexóes admin remotas

I Procedimentos armazenados (stored procedures) estendidos (XPs) do SeL Mail

r xp_cmdshell

Os procedimentos de automação de OLE existem dentro do SQL Server para lornecer al-guns recursos básicos de capacidade de atividade conjunta para versões anteriores. Coma inclusão de CLR (Common Langaage Runtime) no SQL Server 2005, os aplicativos queprecisam dos serviços de automação de OLE (Object Linking and Embedding - vincula-çáo e incorporação de objetos) devem ser reescritos como assemblies Visual Basic .NETou C#.NET A principal vantagem de uma rotina CLR é que ela é executada dentro de umespaço de memória protegido e náo pode corromper a pilha de memória do SeL Server,o que é possível com automação de OLE.

Os XPs do SQL Mail existem pan compalibilidade com versões anteriores e foram de-saprovados no SQL Server 2005 . Yocê não deve usar SQL Mail e se tiver aplicativos queainda utilizam funcionalidade de SQL Mail, eles precisam ser reescritos antes que apróxima versão do SQL Server seja lançada.

OPENROWSET e OPENDATASOURCE o expõem aum aíaquq permitindo que os aplicati-vos incorporem no código credenciais de segurança que geram uma conexão com outrainstância dentro do SQL Server. Se você precisa da capacidade de executar consultas en-tre instâncias, deve usar servidores vinculados que permitam a passagem de credenciaisdo Windows entre máquinas.

O CDOC permite transferir autoridade de execução entre bancos de dados. Quando estáativado, o proprietário do banco de dados que contém o objeto que está sendo chamadoefetivamente cede o controle para outro proprietário de banco de dados. Na Liçáo 4,"Gerenciando permissões", você vai aprender sobre assinaturas, as quais oferecem umcontrole melhor sobre a segurança, ao passo que ainda permitem que procedimentos,funções e triggers acessem objetos entre bancos de dados.

Page 302: Livro_SQL

& DICA DE EXAME

O SQL Server 2005 fornecia um utilitário chamado Surface Area Configuration Manage[ quenão existe no SQL Server 2008. A funcionalidade que era fornecida pelo Surface Area Con-figuration for Connections agora é executada com o SQL Server Configuration Manager. Afuncionalidade fornecida pelo Surface Area Configuration for Features não mudou; a interfacede GUI para sp-configure foi apenas removida.

qf t"rt" rápido

Capítulo LL r Projetando a Segurança do SQL Server

1. Como você configura uma instância de modo que somente conexões locaissejam permitidas?

2. O que você usa para alivaÍ ou desativar recursos para uma instância?

Respostas

1. o provedor de TCP/IP permite que conexões sejam criadas com a instância de

forma remota. Desativando o provedor de TCP/IB você pode criar somente co-

nexões locais com a instância.

2. o procedimento armazenado (stored procedure) de sistema sp_configure é

usado para ativar ou desativar recursos.

PRÁTIcA Configurando a área de superfíc¡e

Neste exercício você vai desativar vírios recursos e verificar as opções de configuraçáodefinidas paÍa a instância.

1. Execute o código a seguir para ativar a capacidade de ver todas as opções de confi-guraçáo de uma instância:

EXEC sp_configure 'show advanced options',1-GO

RECONF]GURE hI]TH OVERRÏDE

GO

EXEC sp_confìgurec0

2. Execute o código a seguir para desativar as consulfas ad hoc distribuÍdas, CDOC,

CLR, procedimentos de automação de OLE, XPs do SQL Mail e xp_cmdshell:

EXEC sp_configure 'Ad Hoc Distributed Querìes',0EXEC sp_configure 'clr enabled',0EXEC sp_configure 'cross db ownership chaìnìng',0EXEC sp_confìgure'0le Automation Procedures',0EXEC sp_confìgure 'SQL Mail XPs',0EXEC sp_confìgure'xp_cmdshe11',0c0RECONFIGURE Ì¡IITH OVERRIDE

GO

301

Page 303: Livro_SQL

Resumo da lição

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

r A primeira decisão sobre configuração de fuea de superficie que você toma ocorredurante a instalação, quando decide se vai obrigar todo acesso de login na instân-cia a usar credenciais somente do Windows.

r Você deve desativar o provedor de TCP/IP de toda instância em que náo queira co-nexões remotas.

r A ferramenta sp_configure é usada para ativar ou desativar recursos.

Revisão da lição

Responda a pergunta a seguir parateslr seu conhecimento sobre aLição 2. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisála em formatoeletrônico.

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1 . Qual fercamenta você usaria pan ativar ou desativar recursos do sel server?

A. SQL Server Configuration Manager

B. A ferramenta sp_configure

C. SQL Server Surface Area Configuration Manager

D. SQL Server Installation Center

Page 304: Livro_SQL

Lição 3: Criando principaisOs prínctpaís (príncípals) sáo os meios pelos quais você se autentica e é identificadodentro de uma instância ou de um banco de dados. Os principais sáo divididos em duascategorias importantes: logins/usuários e grupos que existem em nível de instância e de

banco de dados.

Após esta lição, você será capaz de:

I Criar um login

I Gerenciar a participação como membro de role de servidor

I Criar usuários e roles de banco de dados

I Gerenciar a participação como membro de role de banco de dados

I Criar um usuário sem login

Tempo estimado para a lição:40 minutos

Capítulo 11 I Projetando a Segurança do SQL Server

Logins

Para ter acesso a uma instância, um usuário precisa ser autenticado, fornecendo creden-ciais do SQL Server paravaTidar. Você cria logins para uma instânciapara permitir que

um usuário seja autenticado. Dentro do SQL Server 2008, os logins podem ser de cincotipos diferentes:

r Login paùâo do SQL Server

I Login do Windows

r Grupo do Windows

I Certificado

I Chave assimétrica

Um login padráo do SQL Server é, criado por um administrador de banco de dados (DBA)e configurado com um nome e uma senha, que devem ser fornecidos por um usuáriopara ser autenticado com êxito. O login é armazenado dentro do banco de dados mestree recebe um identificador de segurança local (SID) dentro do SQL Server.

Um login do SQL Server também pode ser mapeado em um login do Windows ou emum grupo do Windows. Ao adicionar um login do Windows ou grupo do Windows, o

SQL Server armazena o nome do login ou grupo junto com o SID correspondente doWindows. Quando um usuário fazlogin na instância usando credenciais do Windows,o SQL Server fazuma chamada para aAPI (interface de programaçáo de aplicativos) de

segurança do Windows paravalidar a conía, recupera o SID e, em seguida, compara o

SID com aqueles atmazenados dentro do banco de dados mestre paraverificar se a con-ta do Windows tem acesso à instância.

Page 305: Livro_SQL

304

iGþ orca DE EXAME

Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

Você pode criar logins do SQL Server mapeados em certificados ou em chaves assimétricas.Contudo, um login mapeado em um certificado ou em uma chave assimétrica não fornece ummodo de autenticar na instância. Os logins mapeados em certificados e em chaves assimétricassão usados internamente como um contêiner de segurança.

A sintaxe geîérica para criar um login é:

CREATE LOCIN nomelogìn { h/fTH <lisra_opçãol> | FROM <origens> }<lista_opçãol-> ::=

PASSIVORD = {'senha' I senha_com_hashjng HASHED } t MUST_CHANCE l[ , <lìsta_opção2> [ ,... ] l

<lista_opção2> ::=SID = sid

DEFAULT_DATABASE = banco de dadosDEFAULT_LANCUACE = idiomaCHECK_EXPTRATToN = t 0N | oFFÌCHECK-POLICY = { ON | 0FF}CREDENTIAL = nome_credencial

<SOUFCêS> : ]=l^lIND0hlS [ IVITH <opções_windows> [ ,... ] lI CERTIFICATE nomecertI ASYMMETRIC KEY nome_chave_assim

<opções_windows> ::=DEFAULT_DATABASE = banco de dados

I DEFAULT_LANCUAGE = idioma

Quando a opção CHECK_POLICY (a configuraçãLo padrão e recomendada) está ativada, osQL server 2008 impoe as configurações de plano de senha do windows, quando vocêcria um login do SQL Server. CHECK EXPIRATION é usada para impedir ataques de for-çabrutacontra um login. Quando cHlcK_EXpIRATIoN esti ativad,a, sempreiue o loginé usado para se aulenticaÍ em uma instância o SQL Server verifïca se a sènha expirou esolicita ao usuário para que altere a senha, se necessário.

o uso de grupos do Windows proporciona a maior flexibilidade para gerenciar acessode segurança. Você simplesmente adiciona ou remove contas do grupo para controlaro acesso a uma instância do SQL Server. Um DBA também fica isolado dos detalhes depessoas que entram e saem das empresas ou se mudam para diferentes grupos dentrode uma empresa. Então, o DBA pode se concentrar na definição de grupos com base nosperfis de permissão e deixar a funcionalidade de adicionar e remover contas de usuáriopara processos empresariais padrão dentro da empresa.

Quando você cria um login do SQL Server, pode especificar um SID para a confa explici-tamente. Normalmente, você não usarâ a capacidade de especificar um SID; no entanto,quando você precisa copiar logins do sel server de uma instância paîaoútra, a pos-sibilidade de especificar o SID permite mapear logins apropriadamente para quaisquerbancos de dados restaurados.

Page 306: Livro_SQL

Um mecanismo de proteção de conta no Windows faz uma conta ser bloqueada quandoa senha coÍÍeta náo é fornecida dentro de um número especificado de tentativas. Todaconta no Windows pode ser bloqueada devido a tentativas de login malsucedidas, excetoa conta de administrador. A. conta de administrador não pode ser bloqueada porque sevocê bloqueasse o administrador, não teria uma maneira de fazer login no sistema e

corrigir tudo. Assim como a conta de administrador no Windows, a conta sa não podeser bloqueada devido a tentativas de login malsucedidas, tornando essa conta o primeiroalvo de ataques de força bruta. Os administradores de sistema frustram ataques de forçabruta na conta de administrador mudando o nome da conta. Você também pode mudar onome da coîía sû para proteger uma instância contra ataques de força bruta.

Quando você está fazendo manutenção em um banco de dados, como implantandocódigo novo ou alterando a estrutura do banco de dados, precisa garantft que osusuários náo estejam acessando o banco enquanto isso. Uma maneira de impedir oacesso ê,revogar permissões de um login; no entanto, depois vocêterâentão de resta-belecer as permissões. Você pode impedir o acesso, enquanto mantém as permissõesde um login intactas, desativando o login. Você pode desativar o login executando ocódigo a seguir:

ALïER LOCIN <nomelogin> DISABLE

Roles de servidor fixosNo SQL Server, os roles fornecem a mesma funcionalidade dos grupos dentro do Win,dows. Os roles (papéis) oferecem uma maneira conveniente de agrupar vários usuárioscom as mesmas permissões. As permissões são atribuídas ao role, em vez de serematribuídas a usuários individuais. Então, os usuários recebem o conjunto de permissõesnecessárias, tendo suas contas adicionadas no role apropriada.

O SQL Server tem um conjunto de roles em nível de instância. Os roles em nível de instân-cia são referidas como roles de servidor fixas, pois você não pode modificar as permissõesno role. Você também não pode criar roles adicionais em nível de instância.

Os roles de servidor que acompanham o SQL Server estão mostradas na Tabela 11-2.

Capítulo 1L r Projetando a Segurança do SQL Server 305

Tabela 11-2 Roles de servidor fixos

bulkadmin

dbcreator

diskadmin

processodmin Gerenciar conexöes e iniciar ou fazer uma pausa em uma instância

securityadmin Criaç alterar e eliminar logins, mas não podem alterar senhas

Administrar operações de BCP e inserção em massa

serveradmin Executar as mesmas açöes de diskadmin e processadmþ além degerenciar endpoints, alterar configuraçöes de instância e encerrar ainstância

Criar bancos de dados

Gerenciar recursos de disco

(continua)

Page 307: Livro_SQL

306 Kit de Treinamento MCTS (Exame 70-432): Migosoft SQL Server 2008

Tabela 11-2 Roles de servidor lixos (continuoçõo)

setupadmin

sysodmin

Usuários de banco de dados

A segurança do SQL Server funciona segundo o princípio do "nenhum acesso por pa-

drão". Se você não tiver recebido permissáo explicitamenle, náo poderâ executar uma

ação. Você concede acesso a um banco de dados adicionando um login como usuário no

banco de dados, executando o comando CREATE USER. CREATE USER tem a seguinte

sintaxe geral:

CREATE USER nome-usuáriot{{FoRlFRoM}

{ LOGIN nome-logìn

I CERTIFICATE nome-cert

I ASYMMETRIC KEY nome-chave-assjmÌ

I I^ÍITHOUT LOGIN lI I^IITH DEFAULT-SCHEMA = nome-esquema ]

O SID do login é mapeado no usuário do banco de dados para fornecer um caminho de

acesso depois que o usuário estiver autenticado na instância. Quando um usuário altera

o contexto para um banco de dados, o SQL Server examina o SID do login e, se o SID foiadicionado no banco de dados, o usuário poderâ acessar o banco de dados. Contudo,

apenas porque um usuário pode acessar um banco de dados, isso náo significa que

quaisquer objetos dentro do banco de dados possam ser acessados, pois o usuário aindaprecisa receber permissões para o objeto (ou objetos) do banco de dados.

Você pode criar um usuário de banco de dados mapeado em um certificado ou em chave

assimétrica. Os usuários de banco de dados mapeados em certificados ou em chaves as-

simétricas náo fornecem acesso ao banco de dados para nenhum login. Esses usuários

são uma estrutura de segurança interna do banco de dados. Uma das aplicações dessa

estrutura, as assinaturas, serão abordadas na Liçáo 4, "Gerenciando permissões", pos-

teriormente neste capítulo.

Usuários sem log¡nÉ possível criar um usuário no banco de dados que não esteja associado a um login, oque é referido como usuárío sem login.

Antes do SQL Server 2005, se você quisesse permitir que usuários acessassem um ban-

co de dados somente quando um aplicativo específico estivesse sendo usado , utiTizava

um role de aplicativo. Você criava o role de aplicativo com uma senha e alribuia permis-

sões para o role de aplicativo. Então, os usuários especificavam a senha para o role de

aplicativo para obter acesso ao banco de dados sob o contexto de segurança do role de

aplicativo. Infelizmente, quando você conectava com o role de aplicativo, o SQL Server

Gerenciar servidores vincu lados

Executar qualquer ação dentro da instância. Os membros não podem ser

impedidos de acessar qualquer objeto ou de executar qualquer ação.

Page 308: Livro_SQL

não conhecia mais o usuário que estava executando comandos, o que criava um proble-ma pan a atividade de auditoria.

Os usuários sem login foram adicionados para substituir os roles de aplicativo. osusuários ainda se autenticam na instância usando suas próprias credenciais. O login dousuário precisa acessar o banco de dados. Depois que o SQL Server muda o contexto dousuário para o banco de dados, o usuário personifica o usuário sem login pan obter aspermissões necessárias. Como o usuário está se autenticando na instância usando suaspróprias credenciais, o SQL Server ainda pode fazer a auditoria de atividade para umlogin individual, mesmo que o login esteja personificando um usuário sem login.

@ orcn DE EXAME

Capítulo 11 r Projetando a Segurança do SQL Server

Os usuários sem login são feitos para substituir os roles de aplicativo. Eles também fornecemuma trilha de auditoria muito melhor do que um role de aplicativo, pois cada usuário pre-cisa se autenticar na instância usando suas próprias credenciais, em vez de usar uma contagenérica.

Roles de banco de dados fixosAssim como existem roles fixos em nível de instância, o SQL Server fornece um conjuntode roles fixos em nÍvel de banco de dados, como mostrado naTabela 1I-2.

Tabela 11-3 Roles de banco de dados fixos

db accessodmin

db_backupoperator

307

db datareader

db_datawriter

Adicionar ou remover usuários no banco de dados

db ddladmin

Fazer backup do banco de dados, mas não podem restaurar umbanco de dados nem ver informaçöes no banco de dados

db_denydatareader

Executar SELECT em todas as tabelas, views e roles dentro dobanco de dados

db_denydotawriter

Executar INSERT, UPDATE, DELETE e MERGE em todas as tabelasdentro do banco de dados. Os membros deste role tambémdevem ser membros do role db datareader.

db owner

db_securityadmin

Executar instruçöes DDL (linguagem de definição de dados)

lmpedir SELECT em todas as tabelas, views e roles dentro dobanco de dados

public

lmpedir INSERT, UPDATE, DELETE e MERGE em todas as tabelasdentro do banco de dados

O proprietário do banco de dados que tem controle total sobre obanco de dados e todos os objetos nele contidos

Gerenciar a participação como membro de roles e permissõesassociadas, mas não podem gerenciar a participação comomembro do role db_owner

Grupo padrão em todo banco de dados a que todos os usuáriospertencem

Page 309: Livro_SQL

308

Roles de banco de dados de usuário

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Emvez de gerenciar permissões para cada conta, todos os sistemas operacionais moder-

nos permitem que você defina grupos de usuários que têm todos as mesmas permissões.

Tudo que os administradores de sistema precisam fazer é gerenciar os membros de umgrupo, emvez das possivelmente centenas ou milhares de permissões individuais.

O SQL Server usa os mesmos princípios de gerenciamento de segurança que os adminis-tradores têm aplicado em domínios do Windows, fornecendo a capacidade de criar roles

de banco de dados. Um role de banco de dados é um principal dentro do banco de dados

que contém um ou mais usuários de banco de dados. As permissões sáo atribuídas ao

role de banco de dados. Embora você possa atribuir permissões diretamente a um usuá-

rio, recomenda-se criar roles de banco de dados, adicionar usuários em um role e, em

seguida, conceder permissões para o role.

tf t"rt" rápido

1. Quais logins não podem ser usados para se autenticar em uma instância?

2. Que principal de banco de dados foi criado como substituto para um role de

aplicativo?

Respostas

1. Você náo pode usar logins mapeados em um certificado ou em uma chaveassimétrica para se autenticar em uma instância.

2. Os usuários sem login são os substitutos de um role de aplicativo.

PRÁTIcA Criando logins e usuár¡os de banco de dados

Neste exercício, você vai criatvátrios logins, adicionar os logins como usuários no banco

de dadosAdventureWorks e, em seguida, criar um usuário sem login dentro do banco de

dados AdventureWorþs.

1. Clique em Iniciar, clique com o botáo direito do mouse em Meu Computador e sele-

cione Gerenciar.

2. Clique com o botáo direito do mouse no nó Usuários sob Usuários e grupos locais e

selecione Novo usuário. Crie uma conta do Windows chamada TestAccount. Feche o

Gerenciamento do computador.

3. Execute o código a seguir para adicionar a conla do Windows como um login em

sua instância, substituindo <nome computador> pelo nome da máquina na qualvocê está executando o SQL Server:

--0s colchetes são obrigatórìos devido às regras dos identificadoresCREATE L0GIN [<nome computador>\TestAccount] FROM Ì¡IINDOWS

GO

4. Execute o código a seguir paracriar dois logins nativos do SQL Server, substituindo<DigíteSenhaForteAqut> por uma senha forte e adicione as contas como usuáriosno banco de dados AdventureWorks :

Page 310: Livro_SQL

CREATE LoCIN Test WITH PASSI^IoRD : '<DigitesenhaForteAqui>'CREATE L0GIN Test2 WITH PASSWORD = '<DigiteSenhaForteAqui>'c0USE AdventureVr/orksGO

CREATE USER Test FOR LOCIN TestCREATE USER Test2 FOR LOCIN Test2GO

5. Execute o código a seguir para üiü um usuário sem login no banco de dados Ad-ventureworþ.sl

USE AdventureVr/orkscoCREATE USER TestUser hIITH0UT LOCINGO

6. Execute o código a seguir para examinar os endpoints, junto com a instância e osprincipais do banco de dados:

--Princìpais em nível de instância.SELECT * FROM sys.asymmetric_keysSELECT * FROM sys.certifjcatesSELECT * FROM sys.credentìalsSELECT * FROM sys.linked_logìnsSELECT * FROM sys.remote_logìnsSELECT * FROM sys. server_pr.i ncì pa'i sSELECT * FROM sys.server_role_membersSELECT * FROM sys.sqì_1og'insSELECT * FROM sys.endpo"intsGO

--Principaìs em nível de banco de dados.SELECT * FROM sys.database_prìncipaìsSELECT * FROM sys.database_role_membersGO

7. Execuie o código a seguir para mudar o nome da conía sa:

ALTER LOCIN sa tdITH NAME = MySaAccountGO

Resumo da liçãor Você pode criar logins nativos do SQL Server ou mapear contas do Windows em um

login do SQL Server.

r Os logins podem ser mapeados em certificados ou em chaves assimétricas, mas oslogins mapeados em certificados ou em chaves assimétricas não podem ser usadospara se autenticar em uma instância.

r Como a conla sa. não pode ser bloqueada, você deve mudar o nome da conlausandoo comando AUIER LOGIN.

Capítulo LL r Projetando a Segurança do SQL Server 309

Page 311: Livro_SQL

310

I Os membros do role sysadmin podem executar qualquer açáo dentro da ins-tància e não podem ser impedidos de executar qualquer comando. Os membrosdo role db_owner podem executar qualquer ação dentro de determinado bancode dados e não podem ser impedidos de executar qualquer comando dentro dobanco de dados.

r os usuários sem login, criados como substitutos dos roles de aplicativo, sáo usuá-rios de um banco de dados que náo são mapeados em um login.

Revisão da lição

Responda as perguntas a seguir paratestar seu conhecimento sobre aLição 3. As per-guntas também estáo disponíveis no CD do livro (em inglês) se você preferir revisá-lasem formato eletrônico.

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" nofinal do livro.

1. A Wide World Importers tem um domínio Windows Server 2003 e todos os servi-dores com SQL Server estão sendo executados no Windows Server 2003 ediçãto

Enterprise. A instância do SQL Server está configurada para autenticação somentede Windows. Roles de banco de dados foram criados para cadagrupo de permissõesdentro de um banco de dados. Os logins sáo adicionados nos roles de banco dedados. Os DBAs querem mover a atribuição de segurança dos usuários para os pro-prietários de cada aplicativo, sem abrir mão do controle das contas ou permissõesdentro da instância do SQL Server. Como os DBAs podem atingir seus objetivos?(Escolha duas. Cada resposta representa parte da solução.)

A. Fazer com que o administrador do Windows permita aos proprietátrios de apli-cativo gerenciar os grupos do Windows associados aos seus aplicativos.

B. Adicionar os logins dos proprietários de aplicativo no role securíþtadmín.

C. Mapear os logins do SQL. Server no grupo do Windows correspondente a cadaaplicativo.

D. Adicionar os logins dos proprietários de aplicativo no role sysadmín.

2. Tina precisa da capacidade de fazer backup de bancos de dados em uma instância,sem também ter a autoridadepara restaurar ou acessar o conteúdo do banco de

dados. Como você cumpriria esse requisito empresarial com o mínimo trabalho?

A. Adicionar Tina no role the dískadmín.

B. Adicionar Tina no role the db_owner.

C. Adicionar Tina no role the db_backupoperûtor.

D. Adicionar Tina no role the sysadmtn.

Page 312: Livro_SQL

Lição 4: Gerenciando permissõesO SQL Server nega acesso porpadrão. Portanto, para acessar qualquer objeto ou exe-cutar qualquer açáo, você precisa receber permissão. Nesta lição você vai aprender agerenciar permissões sobre os objetos dentro de uma instância ou banco de dados, quesão chamados de alcançáveis. Você vai aprender a personificar um usuário para verifi-car se as permissões estáo configuradas corretamente. Por fim, você vai aprender a criate gerenciar chaves mestras para que possa usar assinaturas para elevar permissõessomente quando código estiver sendo executado.

Capítulo LL r Projetando a Segurança do SQL Server

Após esta lição, você será capaz de:

I Atribuir permissöes a um usuário

I Controlar permissöes com base em um escopo

I Entender os efeitos da segurança de metadados

I Trabalhar com ownership chains

I Personificar um login ou um usuário

I Criar e gerenciar chaves mestras

I Criar assinaturas e assinar módulos

Tempo estimado para a lição: 20 minutos

Contas administrativas

As contas administrativas ocupam uma posiçáo especial dentro da estrutura de

segurança do SQL Server. ,{s contas que são consideradas administrativas são:

t Membros do role de servidor fixa sysadmín

r Membros do role de banco de dados fixa db owner

a Aconlasa

Além disso, os membros do role sysadmín são membros do role db_owner em todobanco de dados dentro da instância.

Você pode impedir que uma conta execute uma ação removendo a permissáo cor-respondente. Você não pode limitar as permissões de uma conta administraliva.Embora seja possível executar comandos para remover permissões, o comandonão tem qualquer efeito, pois o SQL Server não verifica permissões para uma con-ta administrativa.

311

AlcançáveisAs permissões seriam muito desinteressantes, a menos que você tivesse algo em queaplicá-las. AIém disso, não haveria necessidade de se ter permissões se não existisseninguém para usar a permissão. As permissões funcionam em conjunto com alcançâ-veis e principais. Você usa GRANT/REVOKE/DENY <permíssõ¿s> ON <alcançáveís>TO <príncípaís>.

Page 313: Livro_SQL

312

Os alcançáveís sáo os objetos para os quais você concede permissões. Todo objeto dentrodo SQL Server, incluindo a instância inteira, é um alcançável. Os alcançáveis tambémpodem ser aninhados dentro de outros alcançáveis. Por exemplo, uma instância contémbancos de dados; os bancos de dados contêm €sQüemâs; e os esquemas contêm tabelas,views, procedimentos, funções etc.

EsquemasCada objeto criado dentro de um banco de dados não pode existir sem um proprietário.Todos os objetos devem ter um proprietário, pois os objetos não podem existir espon-taneamente; emvez disso, eles precisam ser criados por alguém. Além do mais, paraqualquer conta acessar um objeto, uma permissáo precisa ser atribuída e você precisa depelo menos um usuário com autoridadepara gerenciar permissões em um objeto.

Como, em última análise, os objetos precisam pertencer a um usuário, você pode gerarum problema de gerenciamento quando precisa remover um usuário de um banco de

dados. Se os usuários do banco de dados possuíssem objetos diretamente, náo seriapossível eliminar um usuário a menos que você atribuísse os objetos a outro ptopñetâ-rio. Atribuir um objeto a um proprietário diferente mudaria o nome do objeto.

os esquemas fornecem os contêineres que possuem todos os objetos dentro de um ban-co de dados e, por sua vez, um esquema pertence a um usuário do banco de dados.Introduzindo um esquema entre usuários e objetos, você pode eliminar um usuário dobanco de dados sem afetar o nome de um objeto ou aplicativos que utilizam o objeto.Os esquemas são os únicos objetos diretamente pertencentes a um usuário do banco de

dados; portanto, para eliminar um usuário que possui um esquema, você deve primeiromudar a posse do esquema para outro usuário.

Permissões

As permissões fornecem aos principais a autoridade para executar ações dentro de umainstância ou de um banco de dados. Algumas permissões se aplicam auma instrução,como INSERT UPDATE eSELECT, outras se aplicam a uma ação, comoALTER TRACE, eainda outras abrangem um escopo de autoridade mais amplo, como C)NTR)L.

Você adiciona permissões em um objeto com a instrução GRANT. O acesso a um objetoé impedido com a instrução DENY. Para se acessar um objeto, a permissão deve ser con-cedida explicitamente. Sempre que você executa uma instrução QRANT, o SQL Servercoloca uma entrada em uma tabela de segurança paru a permissão concedida corres-pondente. Sempre que você executa uma instruçáo DEM uma entrada é colocada emuma tabela de segurança para DENY Como uma instrução DENY anula qualquer oulrapermissáo, DENY anula GRANT

A instrução REVOKE remove entradas de permissão para o objeto referenciado. Porexemplo, se você executa GRANT SELECT O1l Person.Address To Tesl, pode remover oacesso executando REVOKE SELECT ON Person.Address FROM Test. Analogamente, se

você executa DENY SELECT Oll Person.Ad dress TO Test, pode eliminar o efeito de DENYexecutando REVOKE SELECT O1l Person.Address FROM Test.

Você também pode conceder permissões em vários nÍveis; por exemplo, você poderiaconceder permissáo SELECT para o banco de dadosAdventurel7orks no esquema Person

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Page 314: Livro_SQL

e diretamente na tabela Person.Address. Para impedir que o usuário acesse a tabelaPerson.Address, você pode entáo executar três instruçóes REVOKE - banco de dados,

esquema e tabela - para remover o acesso de SELECT natabela.

Escopo de permissãoAntes do SQL Server 2005, você, concedia todas as permissões diretamente paraos objetos dentro de um banco de dados. o SQL Server 2OO5 e posteriores definemvários escopos nos quais você pode atribuir permissões. Um alcançável pode serum banco de dados, esquema ou um objeto. Como você concede permissões paraum alcançável, pode atribuir permissões para um alcançável em qualquer escopo. Aconcessáo de uma permissáo em um banco de dados faz com que ela seja concedidaimplicitamentepara todos os esquemas dentro do banco de dados e, por isso, paratodos os objetos dentro de todos os esquemas. A concessão de uma permissáo paraum esquema faz com que a permissão seja concedida implicitamente a todos os ob-jetos dentro de um esquema.

Capítulo L1 r Projetando a Segurança do SQL Server

IMPORTANTE Escopo de permissão

Você pode atribuir permissöes a qualquer alcançável. Usando contêineres de nível mais alto,como bancos de dados e esquemas, você pode atribuir permissöes com muita flexibilida-de. Embora seja possível atribuir todas as permissões diretamente para os objetos de nível

mais baixo, se um usuário precisar da mesma permissão para acessar todos os objetos emum esquema ou banco de dados, você poderá substituir dezenas ou mesmo milhares depermissöes separadas, concedendo, em vez disso, a permissão para o esquema ou bancode dados.

Um esquema ê a primeita camada de segurança dentro de um banco de dados que você

deve planejar efirar proveito. Um esquema deve representar um cluster funcional dentrode uma aplicaçáo, como Clientes, Produtos, Estoque e RecursosHumanos. Entáo, você

cria objetos dentro do esquema correspondente e concede permissões para os esquemaspara fornecer acesso de segurança para um aplicativo.

Por exemplo, se quiser conceder as permissões SELECT INSERT UPDATE e DELETE para

todas as tabelas e views dentro de um banco de dados, você pode realizar a atribuiçãode permissáo de três maneiras diferentes:

r Conceder permissões pan cada tabela e view

I Conceder permissóes pan cada esquema denlro do banco de dados

t Conceder permissões parao banco de dados

Segurança de metadadosEm sua vida diária, você aceita sem questionar o falo de que muitas coisas são escondi-das porque não tem autoridade parausâ-las. Não deve ser surpresa descobrir que o SQL

Server segue o mesmo princÍpio do "longe dos olhos, longe do conçád'. o SQL Serverprotege todos os metadados dentro do sistema para que você possa ver somente os ob-jetos, dentro de uma instância ou de um banco de dados, para os quais tem permissõespara executar uma açâo.

313

Page 315: Livro_SQL

3L4

Se você precisa permitir que usuários vejam metadados em um banco de dados, podeexecutar o código a seguir:

CRANT VIEI¡l DEFTNITI0N T0 <usuário>

Se você concede VIEW ANY DEFINITION para um login, o login pode ver metadados dequalquer objeto dentro da instância. VIEW ANY DAUBASE permite que um login vejaa existência de bancos de dados dentro da instância, mesmo bancos de dados para osquais o login náo tem direitos de acesso. Para que um login veja estatísticas de execu-

ção, como sys.dm_exec_requests, você precisa conceder VIEW SERVER STATE a ele.

Ownership chains

Cada objeto dentro de um banco de dados tem um proprietário associado - o proprietá-rio do esquema. Você também pode construir objetos que fazem referência a outros obje-tos dentro de um banco de dados, como procedimentos armazenados (stored procedures)que chamam roles (papéis) que executam instruções SELECT em views com base emtabelas. o proprietário de cada objeto referenciado em uma pilha de chamadas forma umownership chain quando o código passa de um objeto para o seguinte dentro da pilhade chamadas. Desde que o proprietário do objeto e todos os outros objetos a que e7e fazreferência tenham o mesmo proprietário, você terâ um ownership chain intacto. o SQL

Server verifica suas permissões em um objeto no topo da pilha de chamadas, assim comosempre que o proprietário do objeto muda dentro de uma pilha de chamadas.

Usando ownership chains, os procedimentos armazenados (stored procedures) se tornamo mecanismo de segurança mais poderoso dentro do banco de dados. Os aplicativos podemser construídos para chamar procedimentos atmazenados (stored procedures), os quaispodem realizar toda a manipulaçáo de dados exigida pelo aplicativo. Contudo, os usuáriosnunca obtêm acesso direto às tabelas subjacentes; portanto, as únicas ações que podem serexecutadas sáo aquelas permitidas pela procedimento armazenado (stored procedure).

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

MELHORES pRÁr¡CnS APIs de aplicativo

É interessante notar que muitos desenvolvedores parecem não concordar com a chamadade procedimentos armazenados (stored procedures) em seus aplicativos. Em vez disso, elesquerem incorporar código SQL diretamente no aplicativo. Mas nenhum dos desenvolvedorescom quem você trabalhar jamais pensará em escrever um aplicativo apenas como um pacotede código incorporado. Em vez disso, os desenvolvedores gastam muito tempo construindoobjetos que têm interfaces e, então, constroem aplicativos conectando os objetos por meio desuas interfaces. Esse estilo de desenvolvimento permite que vários desenvolvedores trabalhemem um aplicativo complexo. mesmo enquanto um código dependente não estiver concluído.Os procedimentos armazenados (stored procedures) executam o mesmo role das APls utiliza-das pelos desenvolvedores dentro de todo aplicativo. Um procedimento armazenado (storedprocedure) nada mais é do que uma API para o banco de dados, o que significa que os desen-volvedores nem mesmo precisam conhecer a estrutura do banco de dados.

Se você tiver uma pilha de chamadas com diferentes proprietários de objeto e o usuárionão recebeu permissão para cada objeto dentro da pilha de chamadas onde o proprietá-rio muda, teñ produzido um ownership chain interrompido. É uma concepção enadacomum achar que um ownership chain interrompido representa uma falha de projeto

Page 316: Livro_SQL

em seu banco de dados. Existem situações, como na auditoria, em que você deseja inter-romper o ownership chain deliberadamente para ganntir que os usuários não possam

acessar qualquer código utiTizado, pan fazer auditoria de ações ou dos dados armaze-nados. Contudo, para preencher alacwa criada por um ownership chain interrompido,você precisa ulilizar assinaturas, as quais serão discutidas no final desia lição.

¡MPORTANTE Proprietário de objeto

Embora os esquemas contenham todos os objetos dentro de um banco de dados, ao determi-nar ownership chains o SQL Server considera o proprietário do esquema como proprietário detodo objeto dentro do esquema.

Capítulo L1 r Projetando a Segurança do SQL Server

Personificação

Você pode personificar (ímpersonate) outro principal para executar comandos em um con-texto de usuário específico. Para personificar outro principal, você deve ter recebido na suaconta a permissáo IMPERSONATE para o principal que deseja personificar. Se a permissãoIMPERSONATE for atribuída para um login, você poderá personificar o login e executarsob a autoridade desse principal em qualquer banco de dados ao qual o principal tenhaacesso. Se a permissáo IMPERSONATE for aíribuída para um usuário de banco de dados,você poderá executar sob o contexto do usuário somente dentro desse banco de dados.

Você efetua a personificação usando ainslruçã,o EXECUTE AS, como segue:

{ EXEC I EXECUTE I AS <especifìcação_ contexto>

<especìfì cação_ contexto>: :={LOGINIUSER}='nome'

I I¡IITH { N0 REVERT I C00K]E INTO @varvariável_bjnária } lI CALLER

@ o,.o DE E*AME

315

Para criar um esquema pertencente a outro principal de banco de dados, o usuário que está

criando o esquema deve ter a permissão IMPERSONATE para o principal que está sendo desig-nado como proprietário do esquema.

Desde que não tenha especiflcado a cláusula NO REVERT paTaEXECUTE AS, vocêpoderetornar ao contexto de execução anterior executando uma instrução REVERT

Chaves mestras

As chaves mestras (master kqts) fornecem a base da hierarquia de criptografia dentro doSQL Server e também sáo necessárias antes que você possa criar um certificado ou umachave assimétrica. Existe uma única chave mestra de serviço paÍa a instância inteira,junto com uma chave mestra de banco de dados dentro de cada banco de dados.

Chave mestra de serviçoCada instância de SQL Server tem uma chave mestra de serviço (servíce master kqt) que é

gerada automaticamente na primeira vezque a instância éiniciada. hschaves mestras de

Page 317: Livro_SQL

316 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

serv[ço são chaves simétricas geradas a parlir da chave da máquina local e criptografadasusando a conta de serviço do SQL Server pela API de proteçáo de dados do Windows.

O processo de geraçáo e criptografr,a garante que a chave mestra de serviço possa ser des-criptografada somente pela conta de serviço sob a qual foi criada ou por um principal comacesso às credenciais da conta de serviço. Por padrão, a chave mestra de serviço éutilizadapara criptografar qualquer chave mestra de banco de dados criada dentro da instância.

Chave mestra de banco de dadosUma chave mestra de banco de dados (database master kqt) deve ser genda explicita,mente com o comando a seguir:

CREATE MASTER KEY ENCRYPTI0N BY PASSW0RD = '<SenhaForte>'

Cada banco de dados tem uma chave mestra diferente, garantindo que um usuário comacesso para descriptografar dados em um banco de dados náo possa também descripto-grafar dados em outro banco de dados sem receber permissão para isso.

A chave mestra de banco de dados (database mcster kqt) é usada para proteger todosos certificados, chaves simétricas ou chaves assimétricas atmazenadas dentro de umbanco de dados. A chave mestra de banco de dados é criptografada com Triple DES e asenha fornecida pelo usuário. lJma cópia da chave mestra de banco de dados tambêmé, criptografada com a chave mestra de serviço para que a descriptognfr,a automáticapossa ser feita dentro da instância.

Quando vocêfaz um pedido para descriprografar dados, a chave mestra de serviço éusada para descriptografar a chave mestra de banco de dados, que é usada para descrip-ßgrafar um certificado, uma chave simétrica ou chave assimétrica e que, por suavez, ê,

usada para descriptografar os dados.

O motivo pelo qual essa hierarquia é importante ê. que você deve ter cuidado ao moverbackups contendo dados criptografados entre instâncias do SQL Server. Para restaurare descriptografar dados com êxito, você também deve fazer backup da chave mestra debanco de dados e, entã.o, regenerar a chave mestra de banco de dados na outra instân-cia. Para executar esse processo, você precisa usar os comandos OPEN MASTER KEy,BACKUP MASTER KEV RESTORE MASTER KEY e CLOSE MASTER KEY,

IMPORTANTE Chaves mestras

Você vai aprender mais sobre criptografia de dados na Lição 6, "Criptografando dados". Con-tudo, uma chave mestra de banco de dados é necessária para criar um certificado, que é a

base de uma assinatura.

CertificadosCertçficados são chaves baseadas no padrã,o X.509 e utilizadas para autenticar as cre-denciais da entidade que está fornecendo o certificado. Você pode criar certificados pú-blicos ou privados. Um certificado público é basicamente um arquivo fornecido por umaautoridade de certificado que valida a entidade que está usando o certificado. Os certi-ficados privados são gerados e utilizados para proteger dados dentro de uma empresa.Por exemplo, o certificado público usado pelo site de seu banco é usado parcprovar qúe

Page 318: Livro_SQL

o site é válido, assim como para criptografar os dados transmitidos entre seu navegadore os servidores do banco.

Para criar um certificado autoassinado no SQL Server, você usa o comando a seguir:

CREATE CERTIFICATE nome_certificado I AUTHORIZATI0N nome_usuário ]{ FR0M <chaves_existentes> | <gerar_novas_chaves> }I ACTIVE FOR BEGIN-DIALOG = { ON I OFF } ]

<chaves_existêhtês> i t=ASSEMBLY nome_montagem I {

I EXECUTABLE ] FILE = 'caminho_para_arqu'ivo'I hIITH PRIVATE KEY ( <opçöes_chave_privada> ) I Ì

<gerar_novas_chaves> : :=I ENCRYPTION BY PASSI¡IORD = 'senha'lWITH SUBIECT -'nome_assunto_certificado'[ , <opções_data> t ,...n ] l

<opções_chave_privada> : ::FILE ='caminho_pare_chave_privada'[ , DECRYPTION BY PASSI^IORD : 'senha' ][ , ENCRYPTION BY PASSI¡IORD : 'senha' ]

<opções_data> ::=START_DATE ='mn/dd/aaaa' I EXPIRY_DATE ='nm/dd/aaaa'

Assinaturas

As asstnaturas (sígnatures) permitem elevar a permissáo de um usuário, mas forRecemuma restrição para que a elevação ocoffa somente quando o usuário estiver executandoum código específico.

Você pode adicionar uma assinatura digital em um módulo - procedimentos armazenados(stored procedures), funções, triggers e assemblies - usando o comandoADD SIGNATURE.O processo de assinafura digital de código paragerenciar permissões é o seguinte:

1. Criar uma chave mestra de banco de dados.

2. Criar um certificado no banco de dados.

3. Criar um usuário mapeado no certificado.

4. Atribuir permissões para um (ou mais) objeto para o usuário.

5. Executar ADD SIGNATURE em um módulo por meio do certificado.

Um dos lugares mais úteis para empregaÍ vma assinatura é no preenchimento de umalacuna em um ownership chain interrompido.

Por exemplo, implementando um ownership chain interrompido, você poderia construiruma lógica para fazer a auditoria das ações de usuário no banco de dados e garantir que

os usuários não possam acessar os dados da auditoria diretamente. Então, o código que

registra atividade de usuário poderia ter uma assinatura digital, permitindo que a açáode auditoria ocorresse dentro do contexto da transação de um usuário, ao passo que ain-da impedisse que o usuário acessasse as tabelas de auditoria diretamente.

Capítulo L1 r Projetando a Segurança do SQL Server 3L7

Page 319: Livro_SQL

318 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

t'teste rápido

1. Como principais, alcançáveis e permissões se relacionam?

2. O que é ownership chain e como você pode ter um ownership chain interrom-pido?

Respostas

1. Você pode conceder, revogar ou negar (GRANT REVOKE ou DENY) permissõesem (ON) um alcançávelpan (TO) um principal.

2. Um ownership chain se aplica aos objetos quefazem referência a outros ob-jetos dentro de um banco de dados. O propñetârio do esquema que contém oobjeto é considerado proprietário do objeto. O SQL Server verifica as permis-sões do primeiro objeto que você acessa, assim como sempre que o proprietáriomuda dentro da pilha de chamadas. O encadeamento de proprietários de objetodentro de uma pilha de chamadas é denominado ownership chain. Um owner-ship chain interrompido se dá quando o proprietário do objeto muda dentro deuma pilha de chamadas e você náo recebeu permissões suficientes para conti-nuar acessando objetos dentro da pilha de chamadas.

PRÁTICA Gerenciando permissões

Nos exercícios a seguir, você vai ver o efeito da segurança de metadados dentro de umbanco de dados à medida que concede permissões nos objetos em vários escopos. Vocêtambém vai investigar os ownership chains e usar assinaturas para permitir o acesso aum objeto por meio de um procedimento armazenado (stored procedure), ao passo quenáo pode acessar o mesmo objeto diretamente.

Neste exercício, você vai atribuir permissóes de objeto em vários escopos e ver o efeitosobre a segurança de metadados usando personificação.

1. Execute o código a seguir paraverificar seu contexto de usuário:

SELECT SUSER-SNAMEO, USER-NAMEO

c0

2. Mude o contexto parao banco de dadosAdventureWorþs evejaa lista de objetos:

USE AdventureWorksGO

--Vê a lista de objetos no banco de dadosSELECT * FR0M sys.objectsGO

3. Personifrca o usuário Test e vê a lista de objetos:

EXECUÏE AS USER = 'Test'GO

SELECT SUSER-SNAMEO, USER-NAMEO

Page 320: Livro_SQL

GO

SELECT * FROM sys.objectsc0REVERT

c0SELECT SUSER-SNAMEO, USER-NAMEOc0

4. Conceda a permissáo SELECT na tabela Production.Document para o usuário Test eveja os resultados:

GRANT SELECT 0N Production.Document T0 TestGO

EXECUTE AS USER = 'Test'c0SELECT * FROM sys.objectsSELECT DocumentNode, Title, FileName FROM Production.DocumentREVERT

c0

5. Conceda a permissáo SELECT no esquema Production e veja os resultados:

--Permjssäo com escopo de esquemaGRANï SELECT 0N SCHEMA::Production T0 Testc0EXECUïE AS USER = 'Test'c0SELECT * FROM sys.objectsREVERT

GO

6. Conceda a permissão SELECT no banco de dados Adventureworks inteiro e veja osresultados. Note que, mesmo que agon o usuário tenha permissáo SELECT para obanco de dados inteiro, ainda existem objetos visíveis apenas para o proprietâño dobanco de dados:

GRANT SELECT ON DATABASE::Adventureh/orks T0 TestGO

EXECUTE AS USER : 'Test'c0SELECT * FR0M sys.objectsREVERT

GO

7. Remova a capacidade de ver metadados de objeto e examine os resultados:

DENY VIEhI DEFIN]TION TO TestGO

EXECUÏE AS USER : 'Test'c0SELECT * FROM sys.objectsSELECT DocumentNode, Title, FjleName FROM Production.DocumentREVERT

c0

Capítulo 1L r Projetando a Segurança do SQL Server 319

Page 321: Livro_SQL

320 Kit de Treinamento MCTS (Êxame 70-432): Microsoft SQL Server 2008

8. Restaure a capacidade de ver metadados de objeto:

REV0KE VIEI¡'/ DEFTNITION FR0M TestGO

EXECUTE AS USER = 'Test'c0SELECT * FROM sys.objectsREVERT

c0

9. Remova a permissáo SELECT do banco de dados. Note que o usuário ainda pode vero conteúdo do esquema Production:

REVOKE SELECT 0N DATABASE::Adventurel¡forks FROM TestGO

EXECUTE AS USER = 'Test'GO

SELECT * FROM sys.objectsREVERT

c0

1O. Remova a permissáo SELECT para o esquema. Note que o usuário ainda pode ver atabela Production.Document e os objetos diretamente associados na tabela:

REVOKE SELECT ON SCHEMA::Production FROM TestGO

EXECUTE AS USER = 'Test'c0SELECT * FROM sys.objectsREVERT

co

11. Remova a permissão SELECT para aíabela. Note que você finalmente removeu o

acesso do usuário Test à tabela Production.DocuÍr€rìt:

REVOKE SELECT 0N Production.Document FR0M TestGO

EXECUTE AS USER = 'Test'GO

SELECT * FROM sys.objectsREVERT

c0

Neste exercício você vai criat uma chave mestra de banco de dados, junto com um usuá-rio de banco de dados com base em um certificado. Você também vai aprender a fazerbackup de um certificado.

1. Crie uma chave mestra no banco de dados Adventurell/orks:

USE Adventurel¡Vorksc0CREATE MASTER KEY ENCRYPTION BY PASSI^IORD = '<DigiteSenhaForteAquJ>'GO

Page 322: Livro_SQL

2. Faça backup da chave mestra de banco de dados e guarde-o em um lugar seguro,

Ionge de seus backups de banco de dados:

OPEN MASTER KEY DECRYPTION BY PASSWORD = '<DigJteSenhaForteAqui>.

BACKUP MASTER KEY T0 FILE = 'C:\Arquivos de Programa\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\awmaste rkey . key'ENCRYPTIoN BY PASShIoRD ='<DigiteSenhaForteAqui>'

c0

3. Crie um certificado:

CREATE CERTIFICATE Testcert I^IITH SUBIECT = 'Test Certificate'c0

4. Faça backup do certificado e guarde-o em um lugar seguro, longe de seus backupsde banco de dados:

BACKUP CERTIFICATE TestCert T0 FILE = 'C:\Arquivos de Programa\Microsoft SQL Server\MSSQL]-o.MSSQLSERVER\MSSQL\Backup\testcert. cer'

GO

5. Crie um usuário de banco de dados mapeado no certificado:

CREATE USER Certuser FROM CERTIFICATE TestCertco

Capítulo 1L r Projetando a Segurança do SQL Server

Neste exercício, você vai implementar intencionalmente um ownership chain interrom-pido e, então, usar assinaturas para acessar objetos aos quais sua conta não teria aces-

so normalmente.

1. Crie um esquema e objetos de teste que criem um ownership chain interrompido:

CREATE SCHEMA SìgnatureTest AUTHORIZATION Test2GO

CREATE TABLE S'i gnatu reTest.TestTabl e

32t

(ID INTColl- VARCHAR(]-O) NOT NULL)

c0INSERT INTO SìgnatureTest.TestTable(Col 1)VALUES ('Rowl-'), ('Row2')GO

--Cria uma procedure para acessar a tabela de testeCREATE PR0CEDURE SìgnatureTest.asp_Proc1AS

SELECT ID, Coll- FROM S'ignatureTest.TestTableGO

--Cria uma p'i1ha de chamada de procedimento armazenado (stored procedure)CREATE PROCEDURE dbo.asp_Sì gnatureTest

TDENTTTY(1,1) ,

Page 323: Livro_SQL

322 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

AS

EXEC Si gnatu reTest. asp_Proc1c0--Concede permìssöes de execução paraprocedure) externoCRANT EXECUTE ON dbo.asp_SìgnatureTestGO

2. Teste o procedimenlo aÍmazenado (stored procedure):

EXECUTE AS USER = 'Test'EXEC dbo. asp_S"i gnatureTestREVERT

CO

5. Conceda permissões de execução para o usuário mapeado no certificado para oprocedimento aÍmazenado (stored procedure) interno e adicione uma assinaturadigital na procedure externa:

GRANT EXECUTE 0N SignatureTest.asp_Proc1 T0 CertUserGO

--Assjna a procedure com o certificadoADD SICNATURE T0 dbo.asp_SignatureTest BY CERTIFICATE TestcertGO

4. Teste a execução da procedure:

EXECUTE AS USER = 'Test'EXEC dbo. asp_Sì gnatureTestREVERT

c0

5. Verifique se o usuário não pode executar o procedimeîto armazenado (stored pro-cedure) interno diretamente:

EXECUTE AS USER = 'Test'EXEC Si gnatureTest. asp_Procl-REVERT

GO

6. Verifique se o usuário não pode acessar a tabela diretamente:

EXECUTE AS USER = 'Test'SELECT ID, Coll FROM SignatureTest.TestTableREVERT

GO

7. Verifique se você não pode personificar o usuário mapeado no certificado:

EXECUTE AS USER = 'CertUser'c0

o procedimento armazenado (stored

I0 Test

Resumo da lição

r Você concede (GRAN\ permissões em (OIV) um alcançável para (TO) um principal.

Page 324: Livro_SQL

r Uma instância, um banco de dados e um esquema são todos alcançáveis. A atri-buição de uma permissão a um escopo de banco de dados ou esquema se aplica atodos os objetos contidos dentro do banco de dados ou esquema.

r Todos os metadados dentro do SQL Server sáo protegidos. Se você não recebeu per-

missão para um objeto, nem mesmo verá o objeto.

r Você pode personificar um login ou usuário de banco de dados com a instruçáoEXECUTE AS. Yocê não pode personificar um principal que foi mapeado em umcertificado ou chave assimétrica.

r Uma chave mestra de serviço é, criada quando a instância é iniciada pela primeiravez.L)ma chave mestra de banco de dados deve ser criada explicitamente dentro de

cadabanco de dados e é exigida pancriar um certificado, uma chave assimétricaou uma chave simétrica.

r Assinaturas digitais podem ser aplicadas em um módulo de código através da ins-trução ADD SIGNATURE, para oferecer uma maneira de expandir permissões so-mente quando você executar um módulo especificado, sem permitir acesso diretoaos objetos subjacentes.

Revisão da liçãoResponda as perguntas a seguir paÍafestar seu conhecimento sobre aLiçã,o 4. As per-

guntas também estáo disponíveis no CD do livro (em inglês) se você preferir revisá-lasem formato eletrônico.

Capítulo 1-1 I Projetando a Segurança do SQL Server

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" nofinal do livro.

323

1. A Wide World Importers acabou de implementar um novo sistema de consulta de

pedidos. Todos os usuários com acesso ao banco de dados precisam ser capazesde executar uma instruçãto SELECT em qualquer tabela dentro do banco de dados.Como você pode rcalizar essa funcionalidade com o mínimo trabalho?

A. Adicionar os usuários no role de banco de dados db_datawríter.

B. Conceder aos usuários a permissão SELECT para cada tabela do banco de dados.

C. Conceder aos usuários a permissão SELECT pano banco de dados.

D. Conceder aos usuários a permissáo SELECT pan cada esquema do banco de

dados.

2. Que instruçáo impede que os usuários vejam metadados sobre objetos em um únicobanco de dados, mesmo que o usuário tenha acesso aos objetos?

A. DENY VIEW DEFTNITION

B. DENY VTEW ÅNY DEFINITTON

C. DENYVIEW SERVER STATE

D. REVOKE VIEW DEFTNITION

Page 325: Livro_SQL

324

Lição 5: Auditoria de instâncias do SQL Server

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Após conceder as permissões mínimas exigidas para a conclusão de uma tarefa, você li-darâ com o segundo princípio da segurança - "Confie, mas verifique". Nesta lição vocêvai aprender sobre os recursos de auditoria disponíveis no SQL Server 2008.

Após esta lição, você será capaz de:

I Criar triggers de DDL

I Configurar especificaçöes de auditoria de instância e de banco de dados

I lmplementar auditoria C2

Tempo estimado para a lição: 30 minutos

Triggers de DDL

Além das açöes CREATE, DROP e ALTER, as tríggers de DDL permitem capturar e res-ponder a eventos de login. Você pode lazer com que o escopo de triggers de DDL seja emnível de instância ou de banco de dados.

A sintaxe genéúcapara criar uma trigger de DDL é a seguinte:

CREATE TRICGER nome_tri ggerON { ALL SERVER I DATABASE }I WITH <opção_trìgger_ddl> [ ,...n ] l{ FOR I AFTER } { tipo_evento I grupo_eventos } [,...n ]AS { instrução_sql [ ; ] [,...n ] I

EXTERNAL NAME < especificador de método > [ ; ] ]Trigger em um evento de L0G0N (Trigger de Logon)CREATE TRICGER nome_triggerON ALL SERVER

I WITH <opção_trigger_logon> [ ,...n ] l{ FoR I AFTER } L0C0N

AS { instruçäo_sq1 t ; I t,...n I I

EXTERNAL NAME < especificador de método > [ ; ] ]Você usa a cláusula ON para fazer uma trigger ter escopo em nível de instância (O1l

'4LL SERVER) ou em nível de banco de dados (ON DATABASE). Você especifica o even-to ou grupo de eventos DDL para o qual affigger é ativada dentro da cláusula FOR.

As triggers de DDL sáo ativadas dentro do contexto da instruçáo DDL que está sendoexecutada. Além de obter informações sobre o comando que foi executado, as triggersde DDL permitem impedir muitas ações de DDL. Se você executar ROLLBACK TRANSAC-nON denfro da trigger de DDL, a instrução DDL que foi executada reverterâ, pois quasetoda instrução DDL é transacional e executa automaticamente dentro do contexto deuma transaçáo.

Nem todas as instruções DDL são executadas dentro do contexto de uma transação.ALTER DAUBASE pode fazer alterações no banco de dados, mas também pode fazeralterações na estrutura de arquivos sob o banco de dados. Como o sistema operacional

Page 326: Livro_SQL

Windows não ê, fransacional, você náo pode reverter uma ação no sistema de arquivos.Para fornecer um comportamento coerente, o comando ALIER DATABASE é executadofora do escopo de uma transaçáo. Você ainda pode ativar uma trigger de DDL ON ALTERDATAßASE; no entanto, a trigger só será capaz de fazer auditoria, não de impedir.

i@ orcn DE ExAME

Um recurso importante das triggers de DDL é a capacidade de reverter uma ação. A estru-tura de gerenciamento baseada em diretivas (Policy-Based Management Framework) criatriggers de DDL para todas as diretivas que você configura, para evitar uma situação de faltade conformidade.

Capítulo L1 r Projetando a Segurança do SQL Server

O SQL Server fornece um mecanismo de agrupamentopara todos os eventos de DDLdentro de uma instância. Você poderia criar uma írigger de DDL para ser ativada nacriação, eliminação ou aheraçáo (CREATE, DROP ouAL|ER) de uma tabela ou poderiaespecificar o grupo de eventos correspondenfes - DDL_T,ABLE_EVENTS.

MAIS INFORMAçöES Grupos de evento

Para obter mais informaçöes sobre grupos de evento, consulte o artigo de Books Online "DDL

Event Groups", no endereço http://technet.microsoft.com/en-us,library/bb510452.aspx.

Dentro do contexto de execução datrigger de DDL, você tem acesso a uma funçáo espe-cial, EVENTDATA), que fornece informações sobre a ação DDL. EVENTDATAQ retonaum documento XML (Extensible Markup Language) com uma estrutura que dependedo evento.

MAIS INFORMAçöES Esquemas EVENTDATA0

325

O esquema XML disponível para um evento está documentado no endereço http://schemas.m i c ro soft. co m /s q I se rv e r/2 0 06/1 l-/ev e ntd ata.

Especificaçöes de aud¡tor¡aAntes do SQL Server 2008, você precisava usarvários recursos parafazer todo o conjun-to de auditoria para uma instância. As triggers de DDL faziam a auditoria de alteraçóesde DDL; as triggers de DML (linguagem de manipulação de dados) laziam a auditoria de

alterações de dados ao custo do aumento dos tempos de transação; o SQL Trace fazia aauditoria de instruções SELECT

O SQL Server 2008 combina todos os recursos de auditoria em uma especificação deauditoria. As especificações de auditoria começam com um objeto de auditoria emnívelde servidor que define o local de registro datrilha de auditoria. Entáo, você criaespecificações de auditoria de servidor e de banco de dados vinculadas ao objeto deauditoria.

A sintaxe geralpara criar um objeto de audifoña de servidor é:

CREATE SERVER AUDIT nome_auditoriaT0 { t FILE (<opções_arquìvo> t, ...n1) I I

Page 327: Livro_SQL

326 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

APPLICAT]ON-LOG I SECURITY_LOG }I V'/TTH ( <opções_auditoria> [, ...n] ) I ]l ; l

<opções_arquivo>::={FILEPATH =' camj nho_arquìvo_so'

[, MAXSIZE = { tamanho-máx { MB I CB I TB } | UNLIMITED } ][, MAX_R0LLOVER_FILES = inteiro ][, RESERVE_D]SK_SPACE = { 0N | oFF } I }

<opções-audi tori a>: :={ t QUEUE_DELAY = intejro l

[, ON-FATLURE : { CONTINUE I SHUTDOWN } ][, AUDIT_CUID = jdentificadorexclusjvo ]]

Se você especificar um arquivo para registrar uma trilha de auditoria, poderâ especificaro tamanho máximo de um único arquivo de auditoria, assim como o número de arqui-vos de memória que devem ser mantidos no sistema operacional. Além disso, você pode

alocar espaço em disco previamente para o log de auditoria, em vez de fazer o arquivocrescer à medida que linhas de auditoria forem adicionadas.

As mensagens de registro ocorrem de forma síncrona ou assíncrona. Quando QUEUE_DELAY : 0, os registros de auditoria são enviados para o log de auditoria de forma sín-crona com a úansação. Se você especificar um tempo de atraso (em milissegundos), os

registros de auditoria poderão ser acumulados, mas ainda deveráo ser gravados dentrodo intervalo especificado.

A ação ON_FAILURE controla como a instância se comporta se os registros de auditorianão podem ser gravados. A opção padrão ê, CONTINUE, a qual permite que a instânciacontinue a execução e processe transações. Se você especificar ovalor SHUTDOWN, caso

o registro de auditoria não possa ser gravado no log dentro do intervalo QUEUE DELAYespecificado, a instância será encerrada.

Depois de estabelecido um objeto de auditoria de servidor, você pode adicionar uma oumais especificações na auditoria. Se quiser fazer a auditoria das ações que ocorrem em

nível de instância, você cria uma especificação de auditoria de servidor com a seguintesintaxe geral:

CREATE SERVER AUDIT SPECIFICATION nome-espec'ificaçäo-auditoriaFOR SERVER AUDTT nome_auditoria{ { ADD ( { nome_grupo_açåo_auditoria } ) } [, ...n]

I I^IITH ( STATE = { 0N | OFF } ) ]}t ; lSe quiser fazet a auditoria de eventos específicos de um banco de dados, você cria umaespecificação de auditoria de banco de dados com a seguinte sintaxe geral:

CREATE DATABASE AUDIT SPECIFICATION nome-especifi caçäo-audi tori a

{ t FOR SERVER AUDIT nome*auditoria l| { ADD ( { <especifjcação-ação_auditoria> |

nome_grupo-ação_auditorja ] )Ì t, ...n1 l

I I¡J]TH ( STATE = { 0N | OFF } ) l}t ; l<especi fi cação_ação_audi tori a> : : =

{ação [ ,...n ]0N I classe:: ] alcançável BY princjpa1 [ ,...n ]]

Page 328: Livro_SQL

MAIS INFoRMAçöES Eventos de auditoria

Para ver uma lista das classes e grupos de evento que podem passar por auditoria, consulte oartigo de SQL Server Books Online, "SQL Server Audit Action Groups and Actions", no endere-

ço http://tec h n et. m i crosoft. co m,/e n - u s/l i b ra ry/cc2 8066 3. o spx.

Auditoria C2

Auditoria C2 ê a especificaçáo de auditoria do Departamento de Defesa dos EUA, quepode ser ativada executando-se o código a seguir:

sp_confìgure 'c2 audit mode', 1

A auditoria C2 foi substituída pela especificaçáo Common Criteria, desenvolvida pelaUnião Europeia. Esteja você obedecendo a auditoria C2 ou Common Criteria, comrelaçáo ao SQL Server o resultado da auditoria é basicamente o mesmo. Você precisafazer a auditoria de cada tentativa bem ou malsucedida de acesso a um objeto de

banco de dados.

Quando a auditoria C2 estâ ativada, um arquivo de 1og de auditoria ê, gravado no dire-tório de dados padráo, com um tamanho de memória de200 megabytes (MB). O SQL

Server continua a geÍar arquivos de memória até terminar o espaço em disco, fazendocom isso a instância ser encerrada. Com a auditoria C2 alivada, os registros de auditoriasáo gravados obrigatoriamente. Se o sistema estiver muito ocupado, os pedidos dosusuários seráo cancelados para liberar recursos para gravar a trilha de auditoria.

Capítulo L1 r Projetando a Segurança do SQL Server

CUIDADO lmpacto da auditoria

Você deve tomar muito cuidado quando implementar auditoria C2. Certifique-se de verifi-car se um nível de auditoria mais baixo não atende seus requisitos. Quando ativa a auditoriaC2, você tomou a decisão de que a auditoria é mais importante do que uma transação. Se osistema ficar muito ocupado, o SQL Server cancelará uma transação de usuário para gravarinformaçöes de auditoria.

327

t'rt"tt" rápido

1. Qual objeto pode ser usado para fazer auditoria, assim como para evitar a

maioria das alterações de objeto?

2. Qual objeto é necessário antes que você possa criar uma especificação de audi-toria de servidor ou de banco de dados?

Respostas

1. As triggers de DDL podem fazer a auditoria de qualquer comando DDL. Se

o comando DDL é executado dentro de uma transaçáo, uma trigger de DDLpode ser usada para reverter o comando DDL e impedir que a alteraçãoocorra.

2. Yocê deve criar um objeto de auditoria de servidor antes que uma especificaçãode auditoria de servidor ou de banco de dados possa ser criada.

Page 329: Livro_SQL

328

pnÁncn Criando uma especificação de auditoria de banco de dados

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Neste exercício, você vai criar uma especificação de auditoria de banco de dados parafazer a auditoria de uma instruçáo SELECT INSERT UPDATE ouDELETE que um usuá-rio com permissão db_owner executa nos dados confidenciais contidos na tabela de

histórico de folha de pagamento.

1. Execute o código a seguir paracriar o objeto de auditoria de servidor:

USE MASTER

GO

CREATE SERVER AUDTT RestrictedAccessAuditTO APPLICATION-LOCI¡IITH ( QUEUE-DELAY = 1-OOO, ON-FAILURE = CONTINUE);

co

2. Execufe o código a seguir para criar a especificação de auditoria de banco de da-dos:

USE Adventurel¡lorksGO

CREATE DATABASE AUDIT SPECIFICATION EmployeePayrollAccessFOR SERVER AUDIT RestrictedAccessAudit

ADD (SELECT, TNSERT, UPDATE, DELETE

0N HumanResources. Empl oyeePayHi storyBY dbo)

WTTH (STATE = ON);c0

5. Execute o código a seguir pan ativar a auditoria:

USE MASTER

GO

ALTER SERVER AUDIT RestrictedAccessAuditI^IITH (STATE = 0N) ;GO

4. Expanda o nó Security no Object Explorer e examine o objeto de auditoria de servi-dor chamado RestríctedAccessAudít, sob o nó Audits.

Expanda o nó Security e, em seguida, o nó Database Audit Specifications sob obanco de dados AdventureWorÍes no Object Explorer e examine as propriedades daespecificação de auditoria de banco de dados chamada EmployeePayrollA.ccess quevocê criou.

Execute o código a seguir paratestaÍ aauditoria de banco de dados:

USE AdventureVr/orksc0SELECT * FROM HumanResources.Emp"loyeePayHìstoryGO

b.

6.

7. CIique com o botão direito do mouse no objeto de auditoria de servidor e selecioneView Audit Logs para examinar os resultados da auditoria, como mostrado aqui.

Page 330: Livro_SQL

Capítulo 1L r Projetando a Segurança do SQL Server 329

8. Desative a auditoria de servidor, executando o código a seguir:

USE MASTER

c0ALTER SERVER AUDIT RestrictedAccessAuditWITH (STATE = OFF);CO

9. Examine o log de auditoria e observe que a desativação da auditoria foi registrada.

Resumo da lição

r Triggers de DDL podem ser criados para afivaçãLo quando eventos DDL ou eventosespecíficos dentro de um grupo forem executados.

r Se o evento DDL for executado dentro do contexto de uma transaçáo, você podeusar uma trigger de DDL para impedir que a ação ocorÍa.

I CREATE SERVER AUDIT cria uma instância de um objeto de auditoria.

r Depois de criar um objeto de auditoria, você pode vincular especificações de audito-ria de servidor e de banco de dados ao objeto de auditoria para gerenciar a auditoriacenlralizadamente.

Page 331: Livro_SQL

330

Revisão da lição

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Responda as perguntas a seguir para testar seu conhecimento sobre a Lição 5. As per-

guntas também estão disponíveis no CD do livro (em inglês) se você preferir revisá-lasem formato eletrônico.

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" nofinal do livro.

1 . O diretor de recursos humanos (RH) da Contoso precisa garanlir que somente usuá-rios autorizados acessem os registros de pagamento de funcionários. O que vocêprecisa implementar para satisfazer essas necessidades de auditoria?

A. Uma especificação de auditoria de banco de dados

B. Uma trigger de DDL

C. Uma trigger de DML

D. Uma especificaçáo de auditoria de servidor

2. os administradores de banco de dados da Fabrikam implementaram log shippingpara o banco de dados orders. Para garantir que o log shipping náo possa ser inter-rompido, você precisa impedir que alguém altere o modelo de recuperaçáo do bancode dados para Simples. Como você pode executar essatarefa?

A. Com uma trigger de DDL.

B. Com uma trigger de DML.

C. Você não pode impedir a altenção do modelo de recuperaçáo.

D. Com uma especificaçáo de auditoria de servidor.

Page 332: Livro_SQL

Lição 6: Criptografando dadosOs dados que devem permanecer confidenciais, mesmo para um usuário que tenha per-missão SELECT para uma tabela, devem ser criptografados. Nesta liçáo você vai apren-der sobre a infraestrutura de criptografia fornecida pelo SQL Server 2OO8 e a aplicarctiptografia em seus dados.

Após esta lição, você será capaz de:I Cr¡ptografar dados usando um algoritmo de hashing

I Criptografar dados usando chaves simétricas

I Criptografar dados usando chaves assimétricas ou certificados

I Ativar criptografia de banco de dados transparente

Tempo estimado para a lição: 30 minutos

Capítulo LL r Projetando a Segurança do SQL Server 331

Criptografia de dadosos dados que precisam permanecer confidenciais dentro do banco de dados (como nú-meros de cartão de crédito) devem ser criptografados. Após serem criptografados, osdados não podem ser lidos sem se ter as credenciais corretas. Além disso, as colunascriptografadas não podem ser usadas como argumentos de pesquisa ou como colunasdentro de um índice, pois cada açáo anularia o objetivo da criptografia dos dados.

As colunas podem ser criptografadas usando-se hashing, senha, chave simétrica, chaveassimétrica ou um certificado. As chaves simétricas são comumente usadas, pois umachave simétrica proporciona o melhor equilíbrio entre proteção de dados e desempenho.As chaves assimétricas e os certificados fornecem o método de criptografia e descripto-grafia mais forte.

lmpedindo o acesso a objetos e a dados

Proteger um banco de dados não quer dizer garantir que os objetos náo possam seracessados. se um bem é valioso o bastante e há tempo disponível suficiente, um in-vasor sempre pode conseguilo. Segurança significa toÍîar um sistema mais difícilde penetrar do que compensaria o que seria conseguido com a tentativa.

Além disso, os administradores têm controle total sobre um sistema por um mo-tivo: fornecer a autoridade para gerenciar um sistema. As permissões náo são ve-rificadas para um usuário com acesso administrativo; portanto, você não poderestringir as ações que um administrador pode executar. um administrador temacesso às estruturas internas necessárias para recuperar quaisquer chaves de crip-:.ografla que possam estar em uso. Portanto, é impossível impedir o acesso de umadministrador. O SQL Server tem uma infraestrutura de segurança poderosa, comvárias camadas; ele não é um sistema de gerenciamento de direitos digital.

Page 333: Livro_SQL

332 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

A proteção de objetos também reduz a funcionalidade disponível para esses ob-jetos. Em particular, uma coluna criptografada não pode ser indexada e você náopode pesquisar o conteúdo de uma coluna criptografada. Um dos artigos maisidiotas que encontrei publicado explicava como você poderia pesquisar em umacoluna criptografada. A solução para o problema envolvia colocar na tabela umacoluna que contivesse dados não criptografados, para qlJe você pudesse pesqui-sar a coluna ao passo que também mantinha a coluna criptografada. Se você vaiaÍmazenat os dados em um formato náo criptografado, fambêm náo tem sentidocriptografar os dados, especialmente dentro da mesma tabela. Além disso, assimque você permite que um usuário pesquise dados criptografados, acabou de permi-tir que um invasor utilize ataques de dicionário muito simplesparafazer engenha-ria reversa em suas informações criptografadas.

Algoritmos de hashing

Os algoritmos de criptografia sáo unidirecionais ou bidirecionais. Os algoritmos bidire-cionais permitem criptografar e descriptografar dados. os algoritmos unidirecionais só

permitem criptografar dados, sem nenhuma capacidade de descriptografar. Um algorit-mo de hashing é um algoritmo unidirecional que permite criplografar dados, mas nãopermite descriptografia.

IMPORTANTE Transmitindo e armazenando senhas

É um conceito errado dizer que as senhas são enviadas para o SQL Server em texto puro e queo SQL Server descriptografa a senha armazenada para verificar se a senha enviada correspon-de. O SQL Server usa o hashing MD5 para manipular senhas. Quando uma senha é especifica-da para um objeto, o SQL Server aplica o hashing MD5 e armazena o valor do hashing. Quan-do você especifica uma senha para acessar um objeto, ela passa pelo mesmo hashing MD5, daíé transmitida em um canal seguro e o valor do hashing transmitido é comparado com o valordo hashing armazenado. Mesmo um administrador que esteja fazendo um rastreamento nãopoderá acessar a senha.

O SQL Server permite especificar cinco algoritmos de hashing diferentes - SHA, SHA1,

MD2, MD4 e MD5. O MD5 é o algoritmo escolhido porque fornece uiptografia mais fortedo que os outros algoritmos. Os algoritmos de hashing também são agnósticos quantoà plataforma. Você poderia fazer hashing de um valor dentro do PHP em um sistemaLinux e receber o mesmo valor, como se tivesse feito o hashing do mesmo valor dentrodo SQL Server, desde que tenha usado o mesmo algoritmo.

Os algoritmos de hashing são vulneráveis a ataques de força bruta. Se o intervalo de

valores que você estâpfocurando criptografar épequeno, um invasor pode gerar facil-mente todos os hashings possíveis para o intervalo de valores possíveis. Após geraresses hashings, o invasor precisa comparar os valores de hashing para encontrar umacorrespondência e, assim, fazer a engenharia reversa em seus dados. Por exemplo, datasde nascimento, salários e números de cartão de crédito não seriam boas escolhas paracriptografar usando um algoritmo de hashing.

Page 334: Livro_SQL

Salgando um hashingDesde que o intervaio de valores possíveis seja pequeno, é muito fâcil anular um algo-ritmo de hashing com um ataque de força bruta. Contudo, você pode aumentar substan-cialmente a complexidade paru um invasor, implementando uma técnica de criptografiachamada s aþar (s altíng) .

O "sal" é uma string de um ou mais caracteres adicionados ao valor antes do hashing.Mesmo um único caracterc pode frustrar a maioria dos ataques, desde que você estejaadicionando um sal que realmente aumente a complexidade. Por exemplo, você pode-ria anexar rm zero no final de um salário, mas náo aumentaria a complexidade nemtornaria mais dificil a enûada de um invasor com um ataque de força bruta. Contudo,se você usasse uma única letra como valor do sal, tornaria o ataque de forçabrutasignificativamente mais diffcil. Mesmo que o invasor soubesse que você adicionouapenas uma letra, o idioma inglês, por exemplo, fornece 52 possibilidades adicionais(letras maiúsculas e minúsculas). Além disso, você poderia ter adicionado o caracte-re no início ou no fim, transformando um problema simples em 704 possibilidadesdiferentes para cada valor de salário possível. Se você levar em conta o fato de quepoderia ter inserido aletra em qualquer lugar dentro do salário, o intervalo de possibi-lidades paracadavalor de salário exigiria mais trabalho do que praticamente qualquerinvasor estaria disposto a ter.

Chaves s¡métr¡cas

As chaves símétrtcas utiTizam uma única chave para uiptografia e pan descriptogra-fia. Como apenas uma chave é necessária para criptografar e descriptografar dados, acriptografia de chave simétrica nã,o ê tã,o forte quanto a criptografia baseada em chaveassimétrica ou em certificado. Contudo, as chaves simétricas oferecem o melhor desem-penho possível para uso rotineiro de dados criptografados.

Certificados e chaves ass¡métricas

Os certificados e as chaves assimétricas sáo baseados no padrão X.509 e são basi-camente equivalentes em sua aplicaçáo. As chaves assímétrtcas são geradas por umservidor de chaves dentro de uma empresa e não se pode fazer seu backup nem elaspodem ser movidas de um sistema para outro. Os certificados aceitam backup e podemser restaurados a partir de um arquivo, permitindo que você mova bancos de dados crip-tografados, ao passo que é capaz de recriar o certificado para acessar seus dados.

Criptografia transparente de dados

Senhas e chaves de criptografia podem ser usadas por um aplicativo para cripíografardados deliberadamente. Contudo, para usar os dados você precisa aplicar rotinas espe-ciais para descriptografálos. Emboraseja possível e controlável criptografar dados sele-tivos, criptografat o conteúdo inteiro de um banco de dados geralmente é proibitivo.

A não ser que os dados sejam uiptografados, um invasor pode lê-ios diretamente dosarquivos de banco de dados no disco. Embora as informações náo sejam lidas facilmen-

Capítulo L1 r Projetando a Segurança do SQL Server 333

Page 335: Livro_SQL

334 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

te, os dados sã,o aÍmazenados no disco em um formato de texto puro que pode ser vistodentro de qualquer editor de textos.

Para impedir o roubo de dados enquanto residam no disco ou dentro de um backup, oSQL Server 2008 introduz aTDE (Transparent Data Encryption - criptografia de dadostransparente). A TDE fornece serviços de criptografia e descriptografia em tempo realpara garantir que os dados dentro dos arquivos e backups sejam criptografados. Alémdisso, o SQL Server criptografa e descriptografa os dados de forma transparente paraque os aplicativos náo precisem ser recodificados para tirar proveito da criptografia.

fÉll rvlun¿o realfarr-7

Míchael Hotek

Todos nós vimos os novos artigos nos últimos anos a respeito de roubos de dadosde diversas empresas. Como é a îafuteza humana, todos nós supomos que náoseria possível que tal roubo acontecesse conosco.

Recentemente, eu estava trabaihandojunto a um grande banco que estava se esfor-

çando na implementaçáo de maiores níveis de segurança. Eles tinham uiptografa-do dados sigilosos dentro de colunas. Contudo, sob uma análise reguladora maior,outra auditoria identificou os backups como um ponto fraco na implementação dasegurança, mesmo estando os dados sigilosos criptografados. O banco de dadosainda continha dados confidenciais e as estruturas de tabela também forneciaminformações úteis para um invasor. A empresa decidiu que todo o conteúdo do ba-ckup precisava ser criptografado.

Após um período de avaliação de três meses, eles tinham rcduzido a lista a qua-tro fornecedores que tinham soluções para atender suas necessidades. Infelizmente,somente um fornecedor poderia criptografar os dados antes de serem gravados emdisco, deixando o backup ainda vulnerável. Além disso, a empresa estava analisandouma despesa muito grande com soffware para adquirir as licenças necessárias. Comoas licenças de SQL Server da empresa estavam cobertas por seguro de software, mi-gramos os bancos de dados para o SQL Server 2008 no decorrer do fim de semana e

implementamos criptografia transparente de dados. Não somente os backups agoraestavam criptografados, como também os arquivos de dados e de log.

No processo, a empresa economizou uma quantia de dinheiro significativa. Trêssemanas após a implementaçáo, uma fita de backup foi perdida. A fita finalmen-te foi encontrada e determinou-se que foi simplesmente rotulada de maneiraerrada. Contudo, se tivesse mesmo ocorrido um roubo de dados, a empresa aindaestaria protegida.

A TDE funciona usando uma chave de criptografia armazenada dentro do registrode inicializaçáo do banco de dados. A chave TDE é criptogtafada com um certificadodentro do banco de dados mestre. No caso de um invasor roubar seus arquivos de da-dos ou de log ou, mais provavelmente, um backup de seu banco de dados, o conteúdo

Page 336: Livro_SQL

do banco de dados náo poderâ ser acessado sem o certificado armazenado dentro dobanco de dados mestre.

O processo de implementaçáo da TDE em um banco de dados é o seguinte:

l. Criar uma chave mestra de banco de dados no banco de dados mestre.

2. Aiar um certificado no banco de dados mestre.

5. Criar uma chave de criptografia de banco de dados no banco de dados de destino,usando o certificado do banco de dados mestre.

4. lrlterat o banco de dados e ativar a criptografia.

Capítulo 11 I Projetando a Segurança do SQL Server

1fi1 orca DE ExAME\7

Você deve fazer backup do certificado usado para TDE e guardá-lo em um lugar seguro. De-pois de criptografá-lo, você não poderá acessar seus dados sem o certificado.

Gerenciamento de chave de criptografiaEmbora o SQL Server forneça uma variedade de métodos de criptografia, cada métododeve ser ativado e gerenciado dentro de uma instância. Por intermédio do EKM (Exten-sible Key Management), o SQL Server 2008 oferece a capacidade de se integrar com sis-temas de gerenciamento de chaves empresariais. As chaves podem ser mantidas em umlocal centralizado dentro de uma empresa e exportadas para uso dentro do SQL Server.

Registrando um provedor de gerenciamento de chaves no SQL Server, uma instânciapode tirar proveito de todos os recursos avançados das soluções de gerenciamento de

chaves de hardware e software, como o rcdizio de chaves.

33s

qf t"rt" rápido

7.

2.Qual objeto é exigido para se implementar TDE?

O que você precisa fazet em um algoritmo de hashing para aumentaÍ a com-plexidade quando o intervalo de valores de criptografia possível é pequeno?

Respostas

1. Você deve criar um certificado no banco de dados mestre, o qual é usado paracriptografar a chave de criptografia de banco de dados.

2. Se o intervalo de valores possíveis para criptogtafar é pequeno, você precisasalgar o valor de hashing para anuTar ataques de força bruta.

PRÁTIcA Criptografando dados

Nos exercícios a seguir, você vai aplicar vârias formas de chaves de criptografiaparacriptografar dados de um aplicativo, assim como vai aplicar TDE no banco de dadosAdventureWorþs.

Page 337: Livro_SQL

336 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Neste exercício, você vai comparar um algoritmo de hashing para criplografar dados.

1. Execute o código a seguir e compare os resultados de cada algoritmo de hashing:

DECLARE @Hash varchar(100)SELECT @.Hash = 'Encrypted Text'SELECT HashBytes('MD5', @Hash)

SELECT @Hash = 'Encrypted Text'SELECT HashBytes('SHA', @Hash)

2. Execute o código a seguir e observe que o algoritmo de hashing diferencia letrasmaiúsculas e minúsculas:

DECLARE @Hash varchar(1-00)SELECT @Hash = 'encrypted text'SELECT HashBytes('SHAI-', @Hash)

SELECT @Hash = 'ENCRYPTED TEXT'SELECT HashBytes('SHA1', @Hash)

Neste exercício, você vai usar uma senha para cúptografar dados.

1. Execute o código a seguir e compare os resultados da criptografia com senha:

DECLARE @EncryptedText VARBINARY(80)SELECT @EncryptedText =

Enc ryptByPassph rase (' <Di gi tesenhaForteAqui >',' Encrypted Text' )SELECT @EncryptedÏext,

CAST(DecryptByPassPhrase('<Di gi teSenhaForteAqui >',@EncryptedText)AS VARCHAR(MAX))

Neste exercício, você vai criar uma chave simétrica para criptografar dados.

1 . Execute o código a seguir no banco de dados AdventureWorks para uiar uma chave

simétrica:

CREATE SYMMETRIC KEY TestSymmetri cKey I¡ìIITH ALCORITHM = RC4

ENCRYPTION BY PASSWORD ='<DigiteSenhaForteAqui>'

SELECT * FROM sys.symmetric-keys

2. Exectlte o código a seguir para abrir a chave simétrica:

0PEN SYMMETRIC KEY TestSymmetrìcKeyDECRYPTION BY PASSWORD ='<DigiteSenhaForteAqui>'

5. Execute o código a seguir paraver os dados cripfografados com a chave simétrica:

DECLARE @EncryptedText VARBINARY(80)SELECT @EncryptedText =

EncryptByKey(Key-GUID('TestSymmetrìcKey' ),' Encrypted Text' )SELECT @EncryptedText, CAST(DecryptByKey(@EncryptedText) AS

VARCHAR(30) )

Page 338: Livro_SQL

4. Execute o código a seguir para lechar a chave simétrica:

CLOSE SYMMETRIC KEY TestSymmetricKeyGO

Neste exercício, você vaicriar eûíiTizar um ceriificado para criptografar dados, para queos usuários não possam ver dados que náo têm permissã,o pan acessar.

1 . Execute o código a seguir para criar uma tabela de teste, dois usuários e permissões:

CREATE TABLE dbo.Cert'ificateEncryption(rD rNT ]DENTTTY(1,1) ,

SalesRep VARCHAR(3O) NOT NULL,Saleslead VARBINARY(5OO) NOTNULL)GO

CREATE USER SalesRepl- h/ITHOUT L0CINGO

CREATE USER SalesRep2 l,rlITH0UT LOGIN

GO

CRANT SELECT, INSERT 0N dbo.CertificateEncryptjon T0 SalesReplCRANT SELECT, INSERT 0N dbo.CertificateEncryptjon T0 SaìesRep2co

Capítulo L1 r Projetando a Segurança do SQL Server

2. Crie um certificado para cada usuário, como segue:

CREATE CERTIFICATE SalesRepl-Cert AUTHORIZATION SalesRepl-Ì¡IITH SUBIECT = 'SalesRep 1 certìficate'

GO

CREATE CERTIFICATE SalesRep2Cert AUTHORIZATION SalesRep2WïTH SUBJECT : 'SalesRep 2 certìficate'

GO

SELECT * FR0M sys.certificatesGO

5. Insira dados para cada usuário, como segue:

EXECUTE AS USER='SalesRepl-'GO

INSERT INT0 dbo.CertificateEncryption(Sa'lesRep, SalesLead)VALUES('Sal esRepl-', EncryptBycert(Cert_ID('Saì esReplCert' ),REVERT

c0

EXECUTE AS USER='SaìesRep2'GO

INSERT TNTO dbo.CertificateEncryptìon(SalesRep, SalesLead)VALUES (' Sa'l esRep2', Enc ryptByCert (Cert_ID(' Sal esRep2Cert' ),REVERT

c0

337

'Fabrikam'))

'Contoso'))

Page 339: Livro_SQL

338 Kit de Treinamento MCTS (Êxame70-432): Microsoft SQL Server 2008

4. Examine o conteúdo da tabela, assim como de cada usuário, como segue:

SELECT ID, SalesRep, SalesLeadFROM dbo. Certj fi cateEncrypti on

GO

EXECUTE AS USER='SalesRepl-'GO

SELECT ID, SalesRep, SalesLead,CAST(DecryptByCert(Cert-Id(' Sal esReplCert' ), Sal esLead)

AS VARCHAR(MAX))

FR0M dbo.Certi fi cateEncryptionREVERT

GO

EXECUTE AS USER='SalesRep2'GO

SELECT ID, SalesRep, SalesLead,CAST(DecryptByCert(Cert-Id('Sal esRep2Cert' ), Sal esLead)

AS VARCHAR(MAX))

FROM dbo. Certi fi cateEncrypti on

REVERT

GO

Neste exercício, você vai implementar TDE para o banco de dadosAdventureWorks.

1. Crie uma chave mestra e um certificado no banco de dados mestre, como segue:

USE masterGO

CREATE MASTER KEY ENCRYPTION BY PASSI^IORD = '<DigiteSenhaForteAqui>'c0CREATE CERTIFICATE ServerCert WITH SUBJECT = 'My Server Cert for TDE'

GO

2. Faça backup do certificado e da chave privada em um arquivo para garantir a capa-

cidade de recuperação, como segue:

BACKUP CERTIFICATE ServerCert T0 FILE = 'C:\Arquivos de Programa\Mi crosoft

SQL Server\MSSQLI-O. MSSQLSERVER\MSSQL\Backup\servercert. cer'IIrIITH PRIVATE KEY (FILE = 'C:\Arquivos de Programa\Microsoft SQL Server\MSSQLl0.MSSQLSERVER\MSSQL\Backup\servercert. key',

ENCRYPTTON BY PASShÍORD ='<DigiteSenhaForteAquì>')

5. üie uma chave de criptografia de banco de dados para o banco de dados Adventu-reworks, como segue:

USE AdventureWorksc0

CREATE DATABASE ENCRYPTTON KEY

WITH ALGORITHM = AES 128

Page 340: Livro_SQL

ENCRYPTION BY SERVER CERTIFICAIE ServerCertCO

4. Ative a criptografia para o banco de dados AdventureWorþs:

ALTER DATABASE Adventu rel,rlorksSET ENCRYPTION ON

co

Resumo da liçãoI Os dados podem ser criptografados dentro das tabelas com um algoritmo de hashing,

uma senha, uma chave simétrica, uma chave assimétrica ou um certificado.

I Um algoritmo de hashing deve ser usado com um valor de sal, a não ser que o inter-valo de valores que estâ sendo criptografado seja grande o suficiente para husûarum ataque de força bruta.

I A TDE é usada para criptografar "dados em repouso". O conteúdo dos dados e

do log de transaçáo, junto com todos os backups, sáo criptografados pelo meca-nismo.

r Se você implementar TDE, certifique-se de ter um backup do certificado junto com achave privadâ; câso contrário, não poderâ restaurar um backup.

Revisão da lição

Responda as perguntas a seguir parates|ar seu conhecimento sobre a Lição 6. As per-guntas também estáo disponíveis no CD do livro (em inglês) se você preferir revisá-lasem formato eletrônico.

Capítulo L1 r Projetando a Segurança do SQL Server 339

NOTA Respostas

As respostas a essas perguntas e as explicações das respostas estão na seção "Respostas" nofinal do livro.

1. os DBAs do Woodgrove Bank gerenciam vários bancos de dados sigilosos contendoinformações de carfão de crédito e de cliente. Eles precisam criptografar o conteúdointeiro do banco de dados para que um invasor não possa ler informações do disco.Como eles podem safisfazer esse requisito com o mínimo trabalho?

A. criar um certificado no banco de dados que seja usado para criptografar osdados.

B. Criar uma chave de criptografia de banco de dados e ativar o banco de dadospara criptografla.

Criar uma chave simétrica no banco de dados que seja usada parc criptografaros dados.

Criar uma chave assiméÍricano banco de dados que seja usada pan criptogra-far os dados.

c.

D.

Page 341: Livro_SQL

34O Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

2. Os DBAs do Woodgrove Bank gerenciam vários bancos de dados sigilosos contendoinformações de cartão de crêdito e de cliente. Devido aos recentes roubos de dadosem outros bancos que renderam manchetes, a empresa quer garantir que todos osdados dentro dos backups sejam criptografados. Como eles podem cumprir o requi-sito de criptografia sem a necessidade de alterar aplicativos?

A. Criar um certificado no banco de dados que seja usado para criptografar osdados.

B. Criar uma chave simétrica no banco de dados que seja usada para criptografaros dados.

C. Criar uma chave de criptografia de banco de dados e afivar o banco de dadospara criptografia.

D. Criar uma chave assimétrica no banco de dados que seja usada para uiptogra-far os dados.

Page 342: Livro_SQL

Revisão do capítuloPat.a relorçar o que aprendeu neste capítulo, você pode:

r Ler o resumo do capítulo.

r Examinar a lista de termos-chave introduzidos neste capítulo.

r Completar o cenário de caso. Esse cenário aborda situações reais que envolvem ostópicos deste capítulo e solicita que você crie uma solução.

r Completar as práticas sugeridas.

a Fazer um teste.

Resumo do capítulor Os endpoints fornecem a primeira camada de segurança dentro do SQL Server. For,

necendo uma barreira muito parecida com um firewall, os endpoints garantem quesomente conexões válidas comtrâfego válido possam obter acesso à instância doSQL Server.

r Os endpoints podem ser criados para protocolos TCP ou HTTP Os endpoints TCPpodem ter as cargas úteisTSQL, DAAtsASE_MIRRORING ouSERVICE BROKER. Osendpoints HTTP podem tet a carga (tril SOAP.

I Os endpoints HTTP permitem que procedimentos aÍmazenados (stored procedures)e funções sejam expostas e consumidas como um serviço da Web; na verdade, per-mitindo que o SQL Server alue como um serviço da Web registrado.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando oglossário no final do livro.

I Chave assimétrica

I Certificado

r Especificaçáo de auditoria de banco de dados

I Chave mestra de banco de dados

r Trigger de DDL

r Role de banco de dados fixo

r Role de servidor fixo

r Algoritmo de hashing

r Personificaçáo

I Usuário sem login

r ownership chain

r Principal

Capítulo Ll- r Projetando a Segurança do SQL Server 341

Page 343: Livro_SQL

342 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

r salgar

I Alcançável

r Auditoria de servidor

t Especificaçáo de auditoria de servidor

¡ Chave mestra de serviço

I Assinatura

I Chave simétrica

r TCP endpoint

Cenário de caso: Projetando a segurança do SQL Server

No cenário de caso a seguir, você vai aplicar o que aprendeu neste capítulo. As respostasdessas questões podem ser encontradas na seção "Respostas", no final deste livro.

Cenário de caso: Protegendo a Coho Vineyard

Histórico

Visão geral da empresa

A Coho Vineyard foi fundada em 1965 como uma vinícola regional dirigida por uma fa-mília. Graças aos vinhos premiados produzidos nas últimas décadas, a Coho Vineyardsteve crescimento significativo. Atualmente, a empresa possui 12 vinícolas espalhadaspela Califórnia e Estado de Washington. A Coho emprega 400 pessoas, T4 das quais tra-balham no escritório central, que abriga servidores fundamentais para a empresa.

Mudonços planejodos

Em 2008, a Coho Vineyard finalmente integrou as operações de todas as 12 vinícolas,fornecendo uma plataforma de banco de dados centralizada que é acessada a parlir deuma variedade de aplicativos baseados na Web. Uma auditoria determinou que a CohoVineyard basicamente não tem nenhuma segurança implementada dentro de seus ban-cos de dados, contando, emvez disso, com o fato dos aplicativos terem acesso total pormeio da coîta sa.

A conta sa só deve ser usada em uma emergência pelos membros da equipe de DBAs.Em todas as outras ocasiões, os DBAs devem ufilizar suas próprias credenciais no Win-dows ao acessar uma instância. As tabelas que contêm informações de cliente (especial-mente números de cafiáo de crédito) são obrigadas a serem criptografadas para passarem uma futura auditoria PCI (Payment Card Industry). Todas as ações executadas porum sysadmín ou proprietário de banco de dados são obrigadas a passar por auditoria e

a ser registradas no log de eventos de aplicativo do Windows.

Ambiente de dados existente

Bancos de dados

A Tabela 1.1.-4 mostra os bancos de dados da Coho Vineyards.

Page 344: Livro_SQL

Tabela 11-4 Bancos de dados da Coho Vineyard

Customer

Accounting

HR

lnventory

Promotions

Servidores de banco de dados

Capítulo 1L r Projetando a Segurança do SQL Server

Um único servidor, chamado DB1, contém todos os bancos de dados no escritório cen-tral. DB1 está executando SQL Server 2008, Enterprise Edition, no Windows Server2003, Enterprise Edition.

Requisitos empresar¡a¡s

Requisitos gerais

Os aplicativos baseados na Web precisam set capazes de ler e gravar dados no banco de

dados correspondente. O banco de dados HR precisa ser restrito aos membros do depar-tamento de recursos humanos e qualquer acesso ao banco de dados HR por parte de umusuário administrativo deve passar por auditoria.

Requisitos técnicos

Seguronça

Todo tráfego para denfro e para fora de DB1 deve ser criptografado. A configuraçáo doSQL Server deve minimizar a superfrcie de ataque do servidor, ao passo que ainda devesafisfazer todos os requisitos empresariais e técnicos.

Todos os compuíadores clientes do escritório central devem ser aÍualizados automatica-mente com atualizações da Microsoft.

1 . Como você configura a instânci a para dar acesso aos aplicativos sem fornecer a elesautoridade de sysadmin?

2. Como você garante que os números de cartáo de crêdito sejam criptografados den-tro do banco de dados?

3. O que você implemenlaúapara fazer a auditoria do acesso ao banco de dados HR?

1_80 MB

5OO MB

1_00 MB

250 MB

80 MB

343

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

Gerenciando logins e roles de servidorr Exercício 1 Crie um login do SQL Server e um login do Windows para uma instância.

r Exercício 2 Desative o login para impedir o acesso à instância.

Page 345: Livro_SQL

344

Gerenciando usuários e roles de banco de dados

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

r Exercício 1 Adicione em um banco de dados um usuário mapeado em um login.

r Exercício 2 Crie um role de banco de dados e adicione um usuário no role.

Gerenciando permissöes de instância do SQL ServerI Exercício Adicione um login no role de servidor fixa apropriadapara as permis-

sões que você deseja conceder.

Gerenciando permissões de banco de dadosr Exercício 1 Adicione um usuário em um role de banco de dados fixa.

r Exercício 2 Conceda permissões em um escopo de banco de dados e veja os efeitos.

Gerenciando permissões de esquema e permissöes de objetor Exercício 1 Conceda permissões em um escopo de esquema e veja os efeitos.

I Exercício 2 Revogue as permissões em nível de um objeto e veja os efeitos.

Fazendo auditoria de instâncias do SQL ServerI Exercício 1 Crie um objeto de auditoria de servidor.

r Exercício 2 Adicione auditoria de servidor e especificações de auditoria de bancode dados na auditoria de servidor e teste a auditoria.

Gerenciando criptograf¡a transparente de dadosr Exercício 1 Configure um banco de dados para TDE.

I Exercício 2 Restaure o banco de dados em outra instância parapraticar a restau-raçáo das chaves de criptografia necessárias para acessar o backup.

Faça um testeos testes do cD deste livro (em inglês) oferecem muitas opções. você pode razer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-ficaçáo 70-432. É possível configurar o teste para que ele simule a experiência de fazerum exame de certificaçáo ou configurâ-lo no modo de estudo (study mode) para ver asrespostas corretas e explicações depois de cada questáo.

MA|S TNFORMAçõES Testes

Para mais detalhes sobre todas as opções de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

Page 346: Livro_SQL

Capítulo L2

Monitoran

Em um mundo perfeito, você poderia instalar o Microsoft SQL Server e implantar bancosde dados sem incidentes, os aplicativos teriam um desempenho perfeito e nada jamaisdaria errado. Infelizmente, não vivemos em um mundo perfeito. O hardware falha. Odesempenho dos aplicativos degrada. Transações bloqueiam-se mutuamente. Alteraçõesno ambiente causam interrupções. Neste capítulo você vai aprender a monitorar seuambiente de SQL Server e a diagnosticar problemas.

Objetivos de exame neste capítulo:

r Coletar dados de desempenho usando o System Monitor.

I Coletar dados de rastreamento usando o SQL Server Profiler.

r Identificar problemas de serviço do SQL Server.

r Identificar problemas de concorrência.

I Localizar informações de erro.

Lições deste capítulo:

r Lição 1: Trabalhando com o System Monitor 347

r Lição 2:Trabalhando com o SQL Server Profiler 354

r Lição 3: Diagnosticando falhas de banco de dados 37O

r Liçáo 4: Diagnosticando falhas de serviço 378

r Lição 5: Diagnosticando falhas de hardware 389

r Liçáo 6: Resolvendo problemas de bloqueio e deadlock 393

Antes de começarPara fazer as lições deste capítulo, você deve ter:

r o SQL Server 2008 instalado

r o banco de dadosAdventureVVorþs instalado dentro da instância

Page 347: Livro_SQL

346 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

@ rraunoo real

Míchael Hotek

Com o passar dos anos, o desenvolvimento de plataformas e servidores de ban-co de dados se tornou mais sofisticado, cheio de recursos e interfaces grâficas.As interfaces gráficas devem permitir que os aplicativos sejam desenvolvidos em

menos tempo, isolando o desenvolvedor de todos os detalhes de baixo nível. Ser

isolado dos detalhes tem prós e contras. Pelo lado positivo, você não precisa se

preocupar com o fato de aprender todos os detalhes arquitetônicos de um recursoou como o recurso intenge com o hardware ou outros componentes. Pelo ladonegativo, você náo precisa se preocupar com o fato de aprender todos os detalhesarquitetônicos de um recurso ou como o recurso interage com o hardware ou ou-tros componentes.

Nessa mistura, as ferramentas de desenvolvimento têm depuradores que muitaspessoas acham que é, a única resposfa paraTocalizar e corrigir um problema. Está

se tornando cadavez mais comum o fato de, a não ser que o depurador mostre a

linha de código precisa onde um erro ocorreu e também explique qual é exatamen-te o erro, um desenvolvedor não conseguir localizat o problema.

Esse é um problema sério para um ambiente de SQL Server. O SQL Server interagecom muitos componentes de hardware e de muitas maneiras diferentes. O SQL

Server também tem muitos componentes internos inter-relacionados que tambémafelam uns aos outros. Nessa mistura, você inîoduz seus aplicativos com as es-

truturas de dados, código de banco de dados e vários usuários concomitantes.Uma consulta ma7 escrita, executada por uma única pessoa, pode causar proble-mas para outros usuários que, por efeito cascata, atingem vários componentes do

SQL Server e de hardware. O verdadeiro truque para um DBA é conseguir moni-torar um SQL Server, identificar as âreas problemáticas e fazer alterações antesque os aplicativos sejam afetados. Nos casos em que um DBA náo consegue evitarum problema, um processo metódico, combinado com o conhecimento de todosos detalhes de baixo nível entre o SQL Server e o hardware , é a (tníca maneira de

locaTizar e corrigir um problema rapidamente.

Page 348: Livro_SQL

Lição 1: Trabalhando com o System MonitorO System Monitor, comumente referido como PerfMon, é um utilitário do Microsoft Win-dows que permite capíuar informações estatísticas sobre o ambiente de hardware, so-bre o sistema operacional e sobre todos os aplicativos que expõem propriedades e conta-dores. Nesta lição você vai aprender a usar o System Monitor para reunir contadores emlogs, os quais sáo utilizados para solucionar problemas de sistema e desempenho.

Após esta Iição, você será capaz de:

I Selecionar contadores de desempenho

I Criar um log de contador

Tempo estimado para a lição:20 minutos

Capítulo 12 r Monitorando o Microsoft SQL Server 347

Visão gera¡ do System MonitorO System Monitor utiliza uma arquitetura de sondagem para capturar e registrar da-dos numéricos expostos pelos aplicativos. Os aplicativos sáo responsáveis por atualizaros contadores que são expostos para o System Monitor. Um administrador escolhe oscontadores a serem capturados para análise e o intervalo de coleta de dados. Então, oSystem Monitor usa a definiçáo fonecida para os contadores e o intervalo de sondagempara reunir somente os contadores desejados no intervalo defrnido.

NOTA Localizando o System Monitor

A cada nova versão do Windows parece que você tem de procurar as ferramentas que utilizadiariamente. Ou elas são movidas para um lugar diferente ou o nome é alterado. Com o Sys-tem Monitor não é diferente. Todo mundo com quem já tratei nessa área chama esse utilitáriode PerfMon, porque você inicia o programa com um arquivo chamado PerfMon.exe. Quandoa Microsoft lançou o Windows XP e o Windows Server 2003, ele se chamava Performance,Performance Monitor e System Monitor. O Windows Vista e o Windows Server 2008 muda-ram seu nome mais uma vez, assim como acontecerá no futuro Windows 7. lndependente donome dentro de sua versão de Windows em particulaç ele é oficialmente chamado de SystemMonitor pela Microsoft, você ainda está utilizando o PerfMon.exe e o resto do mundo o chamasimplesmente de PerfMon.

Como os únicos dados permitidos pelo System Monitor são numéricos e processos náosão executados para calcular os valores quando os dados são reunidos, a sobrecarga doSystem Monitor é quase inexistente, independente do número de contadores que estáosendo capturados. Embora você queira minimizar o número de contadores capturadospalanão ser inundado com dados, capturar um contador ou 100 contadores nâo afelao desempenho do sistema.

Os contadores sáo organizados em uma hierarquia de três níveis: objeto, contador e ins-tância. Um objeto é um componente, aplicativo ou subsistema dentro de um aplicativo.Por exemplo, Processot; Networþ InteSface e SQLServer:Databases são todos objetos. Umou mais contadores sáo especificados dentro de um objeto e cada objeto precisa ter pelo

Page 349: Livro_SQL

348 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

menos um contador. Por exemplo, dentro do objeto SQLServer:DatabLses, você tem con-tadores para transações ativas, tamanho de arquivo de dados, transações/s e a porceîla-gem do espaço do log de transaçáo correntemente em uso. Um contador pode ter zero oumais instâncias. Por exemplo, o objeto System tem um contador Processor Queue Lengthque não tem nenhuma instância, enquanto o contador que captura a porcentagem doespaço do log ufllizada dentro do objeto SQLServer:Databases tem uma instãnciaparacadabanco de dados, assim como uma instância cumulativa chamada _Total.

Quando você define contadores para captura¡ pode especificar critérios em qualquernível dentro da hierarquia. Se você decidir capturar um objeto inteiro, o System Monitorreunirá dados de cada confador dentro do objeto, assim como para cada instância dis-ponÍvel dentro do contador. Se você não quiser capturar tudo, pode, alternativamente,capturar dados para um subconjunto de contadores dentro de um objeto, assim comopara um subconjunto de instâncias dentro de um contador.

ffi orca DE ExAME

Para o exame, você precisa saber para que servem os vários contadores de desempenho, assimcomo selecionar o contador (ou contadores) apropriado a capturar para diagnosticar proble-mas dentro de uma instância.

Capturando logs de contadorAo usar o System Monitor pela primeiravez, a maioria das pessoas inicia o programa,adiciona objetos e contadores, e vê os resultados na lela grâfica. Contudo, a tela gráftcanão permite salvar as informações em um arquivo para análise posterior e só forneceum snapshof de cerca de dois minutos dos contadores de um sistema.

Para capturar dados para análise, você precisa configurar um log de contador, o qualé executado em segundo plano, quando ninguém es|.â conectado na máquina. Depen-dendo de seu sistema operacional, você configura um log de contador a partir de umavariedade de lugares. A Figura 12-l é do Windows XP e do Windows Sewer 2005.

Figura 12-1 Logs de contador do System Monitor.

Page 350: Livro_SQL

No System Monitor, clicando com o botão direito do mouse em Counter Logs, selecio-nando New Log settings e dando um nome para o 1og de contador, você vê a janela dedefinição de 1og de contador mostrada naFigura 72-2.

Capítulo 12 r Monitorando o Microsoft SQL Server

FiguraL2-2 Definindo propriedades de log de contador.

Clicar em Add Objects permite especificar os objetos que você deseja capturar.Add Coun-ters permite especificar contadores individuais dentro de um objeto, assim como instân-cias individuais dentro de um contador.

MELHoRES PRÁTtcAs Capturando logs de contador

Ver contadores na interface gráfica,fornecida pelo System Monitor serve apenas para examinaro estado imediato de um sistema. É muito mais útil capturar contadores em um log para seremutilizados para análise posterior. Na configuração de logs de contadoç recomenda-se sele-cionar objetos de contado[ em vez de contadores individuais, para garantir que você tenhacapturado tudo que é necessário para a análise.

O intervalo de amostra determina com que frequência o Windows reúne dados paraos contadores especificados no log. A configuraçáo padrã,o é a cada 15 segundos e é amais comum paraanâ7ise de rotina, estabelecimento de um parâmetro epara análise detendência a longo ptazo. se você precisa anaTisar um problema recorrente, mas que temduraçã,o muito curta, então desejará diminuir o intervalo de sondagem.

METHORES PRÁTICAS Especificando uma conta para o log de contadorNa parte inferior da tela de definição de log de contadori você pode especificar as credenciaisde segurança sob as quais o log de contador é executado. Você sempre deve configurar umlog de contador para execução sob uma conta específica, com permissões suficientes paraacessar os aplicativos para os quais está reunindo contadores. A não definição de uma contaespecífica é a causa mais comum pela qual um log de contador não inicia. As outras causasmais comuns pelas quais um log de contador deixa de iniciar são a expiração da senha, umaconta bloqueada ou uma conta desativada.

Page 351: Livro_SQL

350 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Na guia Log Files, mostrada na Figura 72-3,você pode definir o nome e o formato dolog de contador.

Figura 12-3 Definindo propriedades do arquivo de log.

Contadores de desempenhoEmbora seja possível caplurar milhares de contadores e dezenas de milhares de ins-tâncias de contador, existe um pequeno número de contadores comuns que podem serusados para solucionar uma variedade de problemas.

Um contador individual geralmente é usado em conjunto com outros contadores, alémde informações adicionais sobre seu ambiente, para diagnosticar um problema. Os con-tadores individuais e grupos de contadores podem conduzi-lo a uma ârea do sistemaquetalvez precise de mais investigaçáo, mas não indicam um problema no sistema dire-tamente. Contudo, três contadores indicam um problema no sistema sozinhos:

I System:Processor Queue Length

I Network Interface:Output Queue Length

r Physical DiskAvg. Disk Queue Length

Quando o processador, aintefface de rede ou o disco ficam repletos de atividades, osprocessos precisam esperar que recursos sejam liberados. Cada thread que precisa espe-rar por um recurso incrementa o contador de comprimento de fila correspondente. Porexemplo, um comprimento de fïla de processador igual a oito indica que não há recursode processador suficiente na máquina e que oito pedidos estáo esperando em uma filaque um núcleo de processador se torne disponível. Embora o comprimento da fila possa

ser maior que zero por durações muito curtas, ter qualquer comprimento de fila maiorque zerc rotineiramente ou por um tempo prolongado significa que você tem um garga-1o de hardware que afeta o desempenho de aplicativos.

Page 352: Livro_SQL

MAIS INFORMAçöES Diagnosticando problemas com contadores de desempenho

A Lição 3, "Diagnosticando falhas de banco de dados", a Lição 4, "Resolvendo problemas debloqueio e deadlock" e a Lição 5, "Diagnosticando falhas de hardware", fornecem mais de-talhes sobre dezenas de contadores que são utilizados para diagnosticar uma variedade deproblemas de SQL Servel hardware e Windows.

t't"rt" rápido

Capítulo 12 r Monitorando o Microsoft SQL Server

1. Quais são os itens para os quais você pode capturar dados com o System Mo-nitor?

2. Quais tipos de dados o System Monitor pode captvrar?

3. Quais sáo os três contadores que, sozinhos, indicam um problema de siste-ma?

Respostas

1. Você pode capturar objetos, contadores e instâncias de contador.

2. O System Monitor captura dados numéricos de contadores de desempenhoque são definidos para componentes de hardware ou software.

5. System:Processor Queue Length, Network Interface:Output Queue Length e

Physical Disk:Avg. Disk Queue Length.

PRÁTtcA Criando um log de contadorNeste exercício, você vai criar um log de contador para usar como parâmetro de desem-penho e solucionar uma variedade de erros de sistema.

1. Inicie o System Monitor e crie um novo log de contador.

2. Na guia Geral da caixa de diálogo do novo log de contador, clique em Add Objects.A caixa de diálogo Add Objects aparece, como mostrado aqui.

3s1

Page 353: Livro_SQL

352 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

3. Adicione os seguintes objetos: Ãfiemory, Networle Intetfcce, PhysícalDisk, Processor,

SQLServer:BqfferManager, SQLServer:Databases, SQLServer:Exec Sta.ttsttcs,

SQLServer:General Statístics, SQLServer:Latches, SQLServer:Locks, SQLServer:Memory

Manager, SQLServer:PlanCache, SQLServer:SQL Statístics e SJStem. Clique em Fechar.

4. Especifique um intervalo de 15 segundos, assim como uma conta sob a qual vaiexecutar o 1og de contador.

5. Clique na guia Log Files, como mostrado aqui, e inspecione as configurações padrão.

6. Clique em OK para salvar o log de contador. Inicie o log de contador clicando com obotáo direito do mouse no 1og e selecionando Start.

Page 354: Livro_SQL

Capítulo 12 r Monitorando o Microsoft SQL Server

Resumo da liçãor O System Monitor é usado parc capturar estatísticas numéricas sobre componentes

de hardware e software.

I Os contadores são organizados em uma hierarquia de três níveis: objeto de conta-doç contador e instância de contador.

r Um objeto de contador deve ter pelo menos um contador.

r Um contador pode ter zeÍo ou mais instâncias.

r Você captura logs de contador com o System Monitor parafazer análises.

Revisão da lição

Responda a pergunta a seguir para lesLar seu conhecimento sobre aLição 1. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

3s3

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. O que o contador System:Processor Queue Length mede?

A. o número de pedidos de sistema esperando por um processador

B. O número de pedidos do SQL esperando por um processador

C. O número de processadores rcalizando trabalho ativamente

D. O período de tempo em que um processador está em uso

Page 355: Livro_SQL

354

Lição 2: Trabalhando com o SQL Server Profiler

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

O SQL Server é baseado em um subsistema de evento, o SQL Trace, que é exposto para os

administradores capturarem informações associadas a mais de 200 eventos que podemocorrer dentro de uma instância. O SQL Server Profiler é a fenamenta grâfr,ca que fornecea interface mais comum para o subsistema SQL Trace. Você pode usar os dados caplu-rados para monitorar os erros de uma instância ou problemas de concorrência. Você

também pode usar o Profiler para capturar dados que são usados para otimizar o de-sempenho das consultas que estão sendo executadas no ambiente. Nesta iição, você vaiaprender a cúar uma variedade de rastreamentos do Profiler, que podem ser utilizadospara diagnosticar erros e melhorar o desempenho e a estabilidade de seus aplicativos.

Após esta lição, você será capaz de:

I Criar um rastreamento do Profiler

I Selecionar eventos de rastreamento

I Filtrar rastreamentos

Tempo estimado para a lição:20 minutos

Definindo um rastreamentoEmbora você possa definir um rastreamento (trcce) usando Transact-SQl (T-SQL), é

mais comum usar o SQL Server Profrler para isso. Você pode iniciar o SQL Server Profilera parÍir do menu Performance Tools do SQL Server 2008. Depois que o Profiler inicia,você seleciona File, New Ttace e, em seguida, se conecta em uma instância para começara configurar um rastreamento, como mostrado naFigara 1,2-4.

e-;ì'*. I l i ;ei¡r*r"ttja¡l ; ¡ r:

..'"-.. - -.::_ r?ænaFj :: ':ì- Lj

'r!ÌÈep.!i44dïFms: -tr..-,

::Ti.Èpidi,qá:FìFr,l l :. . :'i

.UéËleÞ{Þl¿Þj:,ì;

i::t

f +Ëqr9ÞLei

FiguraL2-4 Criando um novo rastreamento.

¡¡f.q€P

¡.irii.r:n..r.:, ::r j:-,Ì i;

rlr¡i ¡; ì,r':i¡ q, :t,,

i¡-:' lIIG.,¡t ¡.:'øq:' l:ÉElt:J

':f -lÐtl't

Page 356: Livro_SQL

Você pode especificar várias propriedades gerais para um rastreamento, como o nome,modelo, hora de parada e se vai salvar os dados de rastreamento. Todo rastreamento é

obrigado a ter um nome e pelo menos um evento.

O Profiler vem com vários modelos que têm eventos, colunas de dados e filtros já de-

finidos; portanto, você pode usá-los como um ponto de partida. A Tabela 72-7lista opropósito geral de cada modelo.

Tabela 12-1 Modelos de rastreamento do Profiler

Capítulo 12 r Monitorando o Microsoft SQL Server

Blank

SP Counts

Standard

Um rastreamento vazio; permite criar um rastreamento inteiro a partir dozero.

Captura cada procedimento armazenado (stored procedure) executadopara que você possa determinar o quanto de cada procedure está sendoexecutado.

TSQL

O modelo mais comum para começar; captura procedimentoarmazenado (stored procedure) e lote (bdtch) SQL ad hoc que esteja

sendo executado,junto com estatísticas de desempenho para cadaprocedure e lote. Todo login e logout também são capturados.

TSQL-Duration Captura a duração de cada procedimento armazenado (stored

procedure) e lote SQL ad hoc executado.

TSQL_Grouped Captura todo login e logout, junto com os procedimentos armazenados(stored procedures) e lotes SQL ad hoc executados. lnclui informaçöespara identificar o aplicativo e o usuário que estão executando o pedido,mas não inclui dados de desempenho.

Captura uma lista de todos os procedimentos armazenados (stored

procedures) e lotes SQL ad hoc executados, mas não inclui estatísticas dedesempenho.

TSQL_Locks

TSQL_Replay Captura os procedimentos armazenados (stored procedures) e os lotesSQL ad hoc executados na instância, em um formato que permitereproduzir o rastreamento em um sistema de teste. Este modelo é

comumente usado para fazer testes de carga e regressão.

Captura informaçöes de bloqueio e deadlock, como processos

obstruídos, encadeamentos de deadlock, gráficos de deadlock,escalada de bloqueio e tempos limite de bloqueio. Este modelotambém captura todo procedimento armazenado (stored procedure),cada comando dentro de um procedimento armazenado (storedprocedure) e todo pedido SQL ad hoc.

TSQL_SPs

Tuning

Captura dados de desempenho de todos os lotes SQL ad hoc,procedimentos armazenados (stored procedures) e cada instruçãodentro de um procedimento armazenado (stored procedure). Todo logine logout também são capturados.

Captura informaçöes básicas de desempenho para lotes SQL ad hoc,procedimentos armazenados (stored procedures) e cada instruçãodentro de um procedimento armazenado (stored procedure).

Page 357: Livro_SQL

356 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Por padráo, quando um rastreamento é iniciado usando-se o Profiler, todos os eventosaparecem em uma grade dentro da interface. Além disso, você pode salvar os dados derastreamento em uma tabela, em um arquivo ou em ambos.

cUlDADo Retornando resultados em uma grade (grid)

Muitas empresas instalam ferramentas de clientes no servidor quando o SQL Server é ins-talado. Embora a instalação de ferramentas forneça utilitários para consultar e solucionarproblemas de uma instância a partir do console do servido[ você precisa levar em conta a

sobrecarga das ferramentas. O Profiler pode capturar uma grande quantidade de eventosem um curto período de tempo e, quando carregados na grade dentro do Profiler, podemexigir o uso de um grande volume de memória. Embora as grades possam apresentar infor-mações em um formato fácil de entender; uma grade gera muito mais sobrecarga do queum formato baseado em texto.

Se você salvar um rastreamento em um arquivo, poderá especificar um limite de tama-nho superior para o arquivo de rastreamento para impedir que esse arquivo cresça forade controle. Além disso, você pode ativar uma memória de arquivo. Se você ativat amemória de arquivo, depois que um arquivo de rastreamento tiver atingido o tamanhomáximo, ele serâ fechado e um novo arquivo serâ aberÍo. Se você especificar um tama-nho máximo sem memória de arquivo, o Profiler pamâ de capturar eventos depois queo tamanho de arquivo máximo for alcançado.

METHORES PRÁTICAS Tamanho máximo de arquivo de rastreamento

Configurar o tamanho de arquivo máximo como 50 megabytes (MB) proporciona um bomcompromisso para gerenciar o tamanho e o número de arquivos de rastreamento. Um arquivode 50 MB é pequeno o suficiente para se copiar ou mover rapidamente em qualquer rede,enquanto também contém um conjunto de eventos suficientemente grande dentro de umúnico arquivo para análise.

Quando você especifica uma tabela para salvar a saída do rastreamento, o Profiler esta-belece uma conexáo e despeja natabela de destino todos os eventos capturados. Sevocêconfigurar um tamanho máximo para o número de linhas, o Profiler pararâ de capturareventos quando o tamanho máximo for alcançado.

MELHORES PRÁTICAS Registrando um rastreamento em um arquivo

Embora o SQL Server seja otimizado para manipular grandes volumes de alteraçöes de dados,a API (interface de programação de aplicativos) do SQL Trace pode produzir eventos suficien-tes para inundar até mesmo um servidor com SQL Server. Você nunca deve registrar eventosde rastreamento na mesma instância para a qual está capturando eventos. Como é possívelinundar um servidor com SQL Server quando você está reg¡strando eventos, a melhor soluçãoé registrar eventos de rastreamento em um arquivo e, então, importar o arquivo posterior-mente para o servidor; para fazer a análise.

A hora de panda do rastreamento permite que você inicie um rastreamento que é execu-tado com duração determinada. Depois que a hora de parada tiver sido alcançada, combase no relógio do servidor, o rastreamento será interrompido automaticamente.

Page 358: Livro_SQL

NOTA Capturando eventos de Analysis Services

O Profiler também pode ser usado para capturar eventos de Analysis Services.

Especificando eventos de rastreamentoO SQL Trace expõe mais de 200 eventos que podem ser capturados. A ação mais impor-tante que você define ao configurar um rastreamento é a seleção do conjunto de eventosque precisa monitorar paravârias situações que ocorrem em um ambiente operacional.

Os eventos sáo classificados em 27 grupos, alguns dos quais contêm mais de 40 even-tos. Os grupos de evento disponíveis estão listados naTabela 72-2.

Tabela 12-2 Grupos de eventos do SQL Trace

Capítulo 12 r Monitorando o Microsoft SQL Server

Cursors

Database

Deprecation

l-3 eventos para mensagens, filas e conversações do Service Broker

L evento para o carregamento de uma montagem CLR (CommonLanguage Runtime)

Errors and Warnings l-6 eventos para erros, avisos e mensagens de informação que estãosendo registradas. Eventos para detectar páginas suspeitas, processosbloqueados e estatísticas de coluna ausentes

7 eventos para a criação, acesso e remoção de cursores

357

6 eventos para crescimento/diminuição de arquivo de dados/log,assim como mudanças de estado do Database Mirroring

Full Text

Locks

2 eventos para notificar quando um recurso depreciado é usadodentro da instância

OLEDB

Objects

Performance

3 eventos para monitorar o andamento do avanço de um índice full text

9 eventos para aquisição, escalada, liberação e deadlocks

5 eventos para consultas distribuídas e chamadas remotas deprocedimento armazenado (stored procedure)

Progress Report

Query Notifications

3 eventos que monitoram quando um objeto é criado, alterado oueliminado

Scans

l-4 eventos que permitem capturar planos de exibição, uso dediretrizes de plano e paralelismo. Este grupo de eventos tambémpermite capturar consultas full text

Security Audit

l- evento para andamento de criação de índice online

4 eventos para monitorar os parâmetros, inscriçöes e modelos denotificações de consulta

2 eventos para monitorar quando uma tabela ou índice é percorrido

44 eventos para monitorar o uso de permissöes, personificação,alterações em objetos de segurança, açöes de gerenciamentoexecutadas em objetos, início/interrupção de uma instância ebackup/restauração de um banco de dados.

(continua)

Page 359: Livro_SQL

358 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Tabela L2-2 Grupos de eventos do SQL Trace (continuação)

Server

Sessions

Stored Procedures l-2 eventos para a execução de um procedimento armazenado (storedprocedure), utilização de cache, recompilação e instruçöes dentro deum procedimento armazenado (stored procedure)

3 eventos para montar uma fita, alterar para a memória do servidor e

fechar um arquivo de rastreamento

Transactions

3 eventos para conexões existentes quando o rastreamento inicia,assim como para monitorar a execução de triggers de logon efunçöes classificadoras do Resource Governor

TSQL

User Configurable l-0 eventos que você pode configurar com SQL Trace

l-3 eventos para o início, salvamento, efetivação e reversão detransaçöes

Os grupos de evento mais comumente usados são Locks, Performance, Securily Audit,Stored Procedures e TSQL. Os grupos de evento Stored Procedure e TSQL são comu-mente capturados junto com eventos do grupo Performance para se ter um parâmetro esolucionar problemas de desempenho de consulta. O grupo de eventos Security Audit é

usado para definir auditoria rapidamente entre uma variedade de eventos de segurança,embora o novo componente de especificaçáo de auditoria forneça recursos de auditoriamais seguros e flexíveis. Os eventos do grupo Locks sáo comumente usados para solu-cionar problemas de concorrência.

9 eventos para a execução de chamadas T-SQL ou XQuery ad hoc.Eventos para um lote SQL inteiro, assim como para cada instruçãodentro de um lote

'O olcn DE ExAME

Você precisa saber quais eventos são usados para resolver vários problemas. Por exemplo, re-solver deadlocks, obstrução (blocking) ou desempenho de procedimento armazenado (storedprocedure).

Embora a maioria dos eventos retorne um pequeno volume de dados, alguns podem terúma caÍga útil significativa em uma instância muito ocupada. Os eventos com que se

deve ter muito cuidado são:

r Performance I Showplan *

I Stored Procedures I SP:StmtCompleted

r Stored Procedures I SP:Stmtstartíng

I TSQL I StmtCompleted

r TSQL I StmtStartíng

Esse grupo de eventos deve ser incluído em um rastreamento somente em conjuntocom um filtro muito restritivo, que limite o rastreamento a um único objeto ou stringde consulta.

Page 360: Livro_SQL

Os eventos Showplan Statístícs Pro¡file, Showplan Text e Showplan XML retornam vo-lumes de dados variados, dependendo da complexidade de uma consulta. Consultascomplexas podem retornar um plano de consulta grande e funções e procedimentosarmazenados (stored procedures) podem ÍetoÍnar vários planos de consulta parain-cluir as instruções dentro da função ou procedure. Os eventos Showplan XML retor-nam a maioria dos dados de todos os eventos do grupo de eventos Performance, poisnáo somente são retornadas o plano de exibiçáo e informações estatísticas, comotambém as informações são formatadas com todas as marcas XML do esquema XMLdo plano de exibiçáo.

Os eventos StmtCompleted e Stmtstarttng produzem o volume mais alto de eventos emqualquer rastreamento. Os procedimentos armazenados (stored procedures) e os lotesT-SQL podem conter um grande número de instruções para serem executadas. Você pode

capturar dados de desempenho no procedimento aÍmazenado (stored procedure) inteirocom o evento RPC:Completed e em um lote inteiro, com o evento SQl:BatchCompleted.Contudo, se você precisar solucionar um problema de desempenho de uma instruçãoindividuai, pode usar os eventos StmtCompleted e Stmtsta.rtíng, que enviam dados de

evento de volta para cada instrução executada dentro de um procedimento armazenado(stored procedure) ou de um lote t-sgL.

Selecionando colunas de dadosDepois de ter determinado quais eventos deseja caplurar, você precisa determinar quaiscolunas de dados vai retornar. Embora seja possível selecionar todas as 64 colunas de

dados para retorîar em um evento de rastreamento, seus dados de rastreamento serãomais úteis sevocê capturar apenas as informações necessárias aos seus objetivos. Porexemplo, você poderia retornar o número de sequência de transação para um eventoRPC:Completed, mas se os procedimentos armazenados (stored procedures) que estáanalisando não alteram dados, então o número de sequência de transaçáo consomeespaço sem fornecer nenhum valor. Além disso, nem todas as colunas de dados são váli-das para todos os eventos de rastreamento; por exemplo, Reads, Writes, CPU e Durationnão são válidas para os eventos RPC:Startíng ou SQl:Batchstarting.

Quando você estiver tentando ter patãmettos de desempenho, pode caplurar os seguin-tes eventos:

I RPC:Startíng

t RPC:Completed

t SQL:Batchstnrttng

t SQL:BatchCompleted

Contudo, você verá que os eventos *Størtíng capturam quase todas as mesmas informa-

ções dos eventos *Completed. Entretanto, se você rastrear os eventos *Completed, tam-bém poderá capturar estatísticas de desempenho com as colunas Reads, Writes, CPU e

Duration. Portanto, é muito improvável que você rastreie os eventos SQL:BatchStartíngou RPC:Startíng, pois eles náo fornecem os dados de desempenho necessários para se

estabelecer um parâmetro nem para solucionar problemas de desempenho.

Capítulo 12 r Monitorando o Microsoft SQL Server 359

Page 361: Livro_SQL

360 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Você pode captutar a coluna DatabaselD, assim como a coluna DatabaseName corres-pondente ao evento capturado. Contudo, como a coluna DatabaseName é muito maisdescritiva e amigável para o usuário do que DatabaselD, você deve omitir DatabaselD de

sua definição de rastreamento.

As colunas ApplicationName, NTuserName, LoginName, ClientProcesslD, SPID, Host-Name, LoginSID, NTDomainName e SessionloginName fornecem contexto para quemestá executando um comando e de onde o comando é originado. SessionloginNamesempre mostra o nome do login que foi usado para conectar a instância do SQL Server,

enquanto a coluna LoginName responsabiliza-se pelas instruções EXECUTE AS e exibeo contexto de usuário atual do comando. A coluna ApplicationName fr,cavazia, a menosque a propriedade de aplicativo da string de conexão tenha sido configurada quandouma tentativa de conexáo bi fefta na instância. As colunas NTUserName e NTDomain-Name refletem a conta Windows da conexão, independente de a conexão ter usado umlogin do Windows ou do SQL Server para ser estabelecida. A coluna HostName é parti-cularmente útilpara se encontrar processos invasores em um ambiente, pois ela lista onome da máquina de onde um comando foi originado. Por exemplo, você poderia usar a

coluna HostName para encontrar os comandos que estáo sendo executados a partir de

uma máquina de desenvolvimento em uma instância de produçáo, devido a uma confi-guraçã.o incorceta de um pool de aplicativos.

As colunas StartTime e EndTime registram os limites de tempo para um evento. As co-lunas StartTime e EndTime são especialmente úteis quando você precisa correlacionardados de rastreamento com informações de outros sistemas.

As colunas ObjectName, SeryerName e DatabaseName são úteis para operações deanálise. Por exemplo, a coluna ObjectName do evenlo RPc:Completed lista o nome doprocedimento aÍmazenado (stored procedure) executado parc que você possa locali-zar facilmente todas as chamadas a um procedimento armazenado (stored procedure)específico que poderia estar causando problemas em seu ambiente. Como é possívelsalvar dados de rastreamento em uma tabela, uma prâtica comum é ter uma (tnicainstância dentro de seu ambiente onde você importa todos os seus rastreamentos.Incluindo as colunas ServerName e DatabaseName, você pode separar dados de ras-treamento facilmente entre várias instâncias/bancos de dados, enquanto ainda sóp recisa de uma inica tab ela p ar a armazenamento.

Aplicando filtrosPara obíer dados de rastreamento, você pode adicionar um ou mais filtros em um ras-treamento. Um filtro é basicamente uma cláusula WHERE aplicada nos dados do eventoretornados pela API do SQL Tlace. Os frltros são definidos em colunas de dados e permi-tem especificar vários critérios a serem aplicados, como mostrado naFigara 1,2-5.

As colunas de dados que contêm dados alfanuméricos permitem que filtros sejam defi-nidos em uma string de texto, usando LIKE ou NOT LIKE, que podem conter um ou maiscaracteres curingas. As colunas de dados baseadas em tempo permitem especiftcar maíorque oû menor que. As colunas de dados numéricas permitem especificar ígual, dlferente,maíor ou ígzal e merTor ou ígual. As colunas de dados binários náo podem ser filtradas.

Page 362: Livro_SQL

Capítulo 12 r Monitorando o Microsoft SQL Server

Figura 12-5 Especificando filtros de rastreamento.

Múltiplos filtros para uma única coluna de dados são tratados como condições oU. osfiltros que abrangem várias colunas de dados são tratados como condições.ð.

Gerenciando rastreamentosVocê pode iniciar, interromper e fazer uma pausa em um rastreamento. Depois queum rastreamento foi iniciado, a API do SQL Trace reÍorna eventos correspondentes àdefinição do rastreamento, ao passo que descarta os eventos que não correspondemaos critérios do filtro de rastreamento. Quando um rastreamento é interrompido, todaa coleta de eventos termina e, se o rastreamento for subsequentemente reiniciado, to-dos os dados de rastreamento anteriores seráo apagados da tela do Profiler. Se quisersuspender a coleta de dados temporariamente, você pode lazer uma pausa em um ras-treamento. Na retomada de um rastreamento, os eventos subsequentes sáo anexadosno final da tela do Profiler.

O SQL Server Profiler é um aplicativo que permite definir graficamente configuraçõesque são transformadas em chamadas de procedimento armazenado (stored procedure)para ctiat e gerenciar rastreamentos. Os módulos de rastreamento que acompanham oSQL Server 2008 estão listados naTabela 72,5.

361

Tabela 12-3 Grupos de evento do SQL Trace

sp_trace_create

s p_t ro ce_g e n e rat e ev e nt

Um procedimento armazenado (stored procedure) que cria umnovo objeto de rastreamento. Equivalente à definição na guiaGeneral da caixa de diálogo New Trace no Profiler.

Um procedimento armazenado (stored procedure) que permite avocê definir seu próprio evento de rastreamento.

(continua)

Page 363: Livro_SQL

362 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Tabefa 12-3 Grupos de evento do SQL Trace (continuação)

sp_troce_setevent

sp_trace_setfilter

Um procedimento armazenado (stored procedure) queadiciona uma coluna de dados para um evento a ser capturadopor um rastreamento. Você precisa chamar sp-trace-seteventuma vez para cada coluna de dados que está sendo capturadapor um evento. Equivalente ao grid de seleção de eventos e

colunas de dados na guia Events Selection da caixa de diálogoNew Trace no Profiler.

sp_troce_setstatus

f n_t ro ce_g eteve n t i nf o

Um procedimento armazenado (stored procedure) que adicionaum filtro em um rastreamento. Equivalente à caixa de diálogoEdit Filter no Profiler.

f n-t ra ce-g etf i I te r i nf o

Um procedimento armazenado (stored procedure) que inicia,interrompe e fecha um rastreamento. O status 0 interrompeum rastreamento. O status 1 inicia um rastreamento. O status 2fecha um rastreamento e remove a definição de rastreamentoda instância.

fn_trace_getinfo

fn_trace_gettoble

Uma função que retorna os eventos e as colunas de dados que

estão sendo capturadas por um rastreamento.

Uma função que retorna os filtros aplicados a um rastreamentoespecificado.

MELHoRES PRÁT|cAs Executando rastreamento automaticamente

Embora você possa usar o Profiler para reunir rastreamentos rapidamente em uma instância,

é muito mais comum configurar e gerenciar rastreamentos usando código. Executando ras-

treamentos por meio de código, você elimina toda a sobrecarga de uma ferramenta grâfica,

enquanto também fornece um meio de rastreamento automático pelo uso de jobs dentro do

SQL Server Agent.

Uma função que retorna informações de status e propriedadesobre todos os rastreamentos definidos na instância.

Uma função que lê um ou mais arquivos de rastreamentoe retorna o conteúdo como um conjunto de resultados.

Comumente usada para importar arquivos de rastreamento para

uma tabela.

Correlacionando dados de desempenho e monitoramentoO SQL Trace é, usado para capturar informações que ocorrem dentro de uma instânciado SQL Server. O System Monitor é usado paru capttlrar contadores de desempenho que

fornecem um quadro dos recursos de hardware e outros componentes em execução no

servidor. O SQL Server náo pode funcionar sem acessar recursos de hardware. O estado

dos recursos de hardware afeø o funcionamento de um servidor com SQL Server. Por

exemplo, uma consulta poderia estar funcionando lentamente, mas o Profiler só in-

Page 364: Livro_SQL

forma o quanto ela está lenta. Contudo, adicionando contadores de desempenho, vocêpoderia descobrir que o motivo pelo qual as consultas estáo lentas é que náo existemrecursos de processamento suficientes.

Embora seja possível diagnosticar um problema usando somente o System Monitor ouo SQL Trace, usar simultaneamente os dois conjuntos de dados fornece contexto paraqualquer análise. O desafio é reunir os dois conjuntos de dados de uma maneira coe-rente que permita uma análise eficiente. Você pode salvar um rastreamento em umatabela, exatamente como pode salvar um log de contador em uma tabela. Depois desalvos os dois conjuntos de dados em uma tabela, você pode executar uma variedade de

consultas para correlacionar as informações.

Se náo quiser escrever consultas para conelacionar os conjuntos de dados, você podeexecutar essa ação de uma maneira muito mais simples. O Profiler permite ver umarquivo de rastreamento com um log de contador. Você pode não apenas ver os doisconjuntos de dados na mesma tela, como o Profiler também mantém ambos sincroniza-dos. À medida que você percorre um rastreamento, um indicador mostra os valores docontador no ponto em que a consulta foi executada.

Capítulo 12 r Monitorando o Microsoft SQL Server

CUIDADO Correlacionando um log de contador com um arquivo de rastreamento

Você só poderá correlacionar um log de contador com um arquivo de rastreamento se tivercapturado a coluna de dados StartTime no rastreamento.

if t"rt" rápido

1. Quais são os três itens que você define dentro de um rastreamento?

2. Quais eventos sáo comumente usados para estabelecer um parâmetro de de-sempenho?

Respostas

1. Dentro de um rastreamento, você define eventos, colunas de dados e filtros.

2. Os eventos RPC:Completed e SQL:BatchCompleted são usados para estabelecerum parâmetro de desempenho.

363

PRÁTlcA Criando rastreamentosNos exercícios a seguir, você vai criar rastreamentos para lazer auditoria de segurança,estabelecer um parâmetro de desempenho e solucionar um deadlock. Você também vaiimportar um rastreamento para uma tabela.

Neste exercício, você vai configurar um rastreamento para fazer atditoria de segu-rança.

1. Inicie o Profiler. Selecione File, New Trace e conecte-se em sua instância.

Page 365: Livro_SQL

364 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

2. Especifique um nome, modelo e opções de rastreamento para salvar em um arqui-vo, como mostrado aqui.

3.

4.

5.

Clique na guia Events Selection.

Marque as caixas de seleção Show All Events e Show All Columns.

Clique com o botáo direito do mouse na categoria de evento Security Audit e,

seguida, escolha Select Event Category, como mostrado aqui.

6.

7.

Clique em Run.

Inicie o SQL Server Management Studio (SSMS),

várias ações de segurança, como criar um iogin,um objeto.

conecte-se na instância e executeum usuário de banco de dados e

Page 366: Livro_SQL

8. Observe os efeitos dessas ações dentro da grade de eventos do Profiler, mostrada aqui.

Capítulo L2 r Monitorando o Microsoft SQL Server

9. Interrompa e feche o rastreamento.

Neste exercício, você vai configurar um rastreamento para estabelecer um parâmetro dedesempenho para procedimentos armazenados (stored procedures) e execuçáo de SQLad hoc.

1. Se necessário, inicie o Profiler. Selecione File, New Trace e conecte-se em suainstância.

2. Especifique um nome, modelo e opções de rastreamento para salvar em um a arqui-vo, como mostrado aqui.

36s

Page 367: Livro_SQL

366 Kit de Treinamento MCTS (Êxame 70-432): Microsoft SQL Server 2008

3.

4.

Clique na guia Events Selection.

Abaixo de Security Audit, desmarque as caixas de seleçáo dos eventos Audit Login,Audit Logout, ExistingConnection e SQL:BatchStarting.

Marque a caixa de seleçáo do evento Showplan XML. O evento Showplan XMLé adicionado apenas para propósitos de demonstração; normalmente, você náocapluraria o plano de exibição de XML para um rastreamento de parâmetro de

desempenho.

Selecione as colunas TextData, NTuserName, LoginName, CPU, Reads, Writes, Du-ration, SPID, StartTime, EndTime, BinaryData, DatabaseName, ServerName e Ob-jectName, como mostrado aqui.

5.

6.

7. Clique em Column Filters e especifique um filtrocomo mostrado aqui.

no banco de dados AdventureWorþs,

Page 368: Livro_SQL

8.

9.

Clique em Run.

Execute várias consultas e procedimenlos armazenados (stored procedures) no ban-co de dados,4dventureWorles e, em seguida, observe os resultados no Profiler, comomostrado aqui.

capítulo 12 r Monitorando o Microsoft SQL Server

Neste exercício, você vai importar um arquivo de rastreamento pan uma labela, pananálise mais detalhada.

1. Abra uma janela de consulta e execute o comando a seguir:

SELECT * INTO dbo.TK432BaselineTraceFROM fn_trace_gettable('c:\test\TK432 Performance Baseline.trc', default);co

2. Execute a consulta a seguir e inspecione os resultados:

SELECT * FROM dbo.TK432BaselineTraceGO

þ.

Neste exercício, você vai correlacionar o log de contador do System Monitor criado naLição l com o rastreamento do Profiler criado no Exercício 2 destalição.

1. Pare o 1og de contador que você criou na Lição 1.

2. lnicie o Profiler. Selecione File, open eTrace File. Selecione o arquivo densftea-mento de parâmetro de desempenho que você criou no Exercício 2 destaliçã,o.

3. Selecione File, Import Performance Data. Selecione o log de conlador que você criouna Lição 1.

367

Page 369: Livro_SQL

368 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

4. Na janela Performance Counters Limit Dialog, mostrada a seguir, selecione NefworkInterface:Output Queue Length, Processor:% Processor Time, System:processorQueue Length e SQlServer:Buffer Manager:Page life expectancy. Clique em OK.

5. Percorra o rastreamento do Profiler no painel superior e observe as alterações queocorrem dentro do grâfico e da grade do contador de desempenho, como mostradoaqui.

Page 370: Livro_SQL

Resumo da lição

r O Profiler é o utilitário que permite interagir graficamente com a API do SQL Trace.

r o SQL Trace expõe eventos que podem ser capturados para fazer auditoria de ações,monitorar o estado operacional de uma instância, fraçar parãmetros de consultas e

solucionar problemas de desempenho.

r Você pode especificar as colunas de dados que deseja capturar para determinadoevento.

r A saída do rastreamento pode ser limitada pela aplicaçáo de filtros.

Revisão da lição

Responda a pergunta a seguir para tesfr seu conhecimento sobre aLíção 2. Aperguníatambém está disponível no CD do livro (em inglês) se você preferir revisála em formatoeletrônico.

Capítulo 12 r Monitorando o Microsoft SQL Server

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. você está tentando solucionar um problema de desempenho na Fabrikam. euase15 minutos depois de uma hora e de forma recorrente, o desempenho da consultadeclina por cerca de 1 minuto antes que o desempenho do aplicativo retorne ao nor-mal. Quais ferramentas você pode usar para diagnosticar a causa dos problemas dedesempenho? (Escolha todas as respostas que se aplicam.)

A. System Monitor

B. Database Engine Tuning Advisor

C. Resource Governor

D. Profiler

Page 371: Livro_SQL

370

Lição 3: Diagnosticando falhas de banco de dados

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Nesta liçáo, você vai aprender a ver e filtrar os logs usados em diagnóstico de erros.Você também vai aprender a lidar com problemas de espaço no banco de dados, que são

as causas mais comuns de erros.

Após esta lição, você será capaz de:

I Trabalhar com arquivos de log do SQL Server

I Diagnosticar problemas de falta de espaço

Tempo estimado para a lição:20 minutos

Logs do SQL ServerAs mensagens de erro e informativas relacionadas a um servidor com SQL Server podem

ser encontradas em:

I Logs do Windows Event

r Logs de erro do SQL Server

t Logs do SOL ServerAgent

I Logs de correio de banco de dados

Normalmente, os logs do Windows Event são vistos usando-se o Windows EventViewer.As informações que afetam a instalaçáo do SQL Server podem ser encontradas em trêslogs de evento diferentes:

r Log de System Event Contém mensagens de erro e informação do sistema, rela-

cionadas principalmente aos componentes de hardware e do sistema operacional.

r Logs de Application Event A principal fonte de informação do SQL Server, que

contém todas as mensagens de erro e informativas de uma instância, incluindomensagens de iníciolparadalpausa de serviço.

I Log de Securit¡r Event Se você tiver ativado a audiforia de eventos de login/lo-gouí, cada conexáo e desconexão bem-sucedida de uma instância é registrada nesse

1og de evento.

O log de erro do SQL Server é um arquivo de texto no disco que pode ser aberto e vistopor qualquer editor de textos, como o Bloco de Nolas. O 1og de erro do SQL Server atualé chamado errorlog (sem nenhuma extensão de arquivo) e estâlocalizado no diretórioMSSQLl0.< ínstâncía>\MSSQL\LOG. Você também pode recuperar o conteúdo do log de

erro corrente como um conjunto de resultados, executando o procedimento armazenado(stored procedure) de sistema estendida sys.xp leaderrorlog.

O log de erro do SQL Server contém informações de inicialização, como a versáo (in-cluindo o pacote de serviço) do SQL Server e do Windows, ID de processo do Windows,modo de autenticaçáo, número de processadores, parâmetros de configuração da ins-tância e mensagens paracadabanco de dados aberto, recuperado e iniciado com suces-

Page 372: Livro_SQL

so. O log de erro também contém mensagens informativas para eventos importantesdentro da instância, como início e interrupçáo de rastreamentos ou backup/restauraçõesde banco de dados. Contudo, o principal objetivo do log de erro é registrar mensagensde erro como corrupção de banco de dados, stack dumps (despejos de pilha), recursosinsuficientes e falhas de hardware.

o log de erro do SQL Server também contém todas as mensagens criadas com um co-mando RATSERR)R que especifique o parâmetro WITH LoG. As mensagens são regis-tradas no log de erro do sQL Server e no log Application Event do windows, se vocêexecuta um comando RAISERROR com nível de gravidade 16 ou mais alto.

As mensagens de erro e informativas relacionadas ao SQL Server Agent são encontradasno arquivo de log do SQL Server Agent chamado Sqlagent.out. O log de correio de bancode dados está contido na tabela dbo.sysmail log, no banco de dados msdb.

Você poderia usar o Windows Event Viewer para ver logs de evento, o Bloco de Notas paraver logs do SQL Server e do SQL ServerAgent e T-SQL para logs de correio de banco de da-dos. Em vez de abrir logs usando vârias fenamentas, o SSMS tem o Log File Viewer que per-mite ver os vários logs de erro e evento em uma única interface, mostrada naEtgara 72-6.

O Log File Viewer fornece uma view integrada de todos os logs especificados, com basenadata e hora de cada evento. Integrando todos os logs especificados, você pode corre-lacionar informações de vários logs diretamente para diagnosticar um erro, como a ca-pacidade de ver as entradas de log de sistema ou de aplicativo que poderiam ter ocorridopor volta da mesma hora em que você encontrou um erro do SeL Server.

Além de ver vários arquivos intercalados em uma única interface, o Log File Viewer tam-bém permite pesquisaç filtrar e exportar informações em um ou mais arquivos de log.

Capítulo L2 r Monitorando o Microsoft SQL Server 371

¡ DsbaôeMóilLoqsE@5@

gcur6*-12ã200s 120ûnA'.hveH.11/æ/Æ09&ElAdve S2 . 11/13/æ 3FlMveS3.ll/2æ12EMvèf4-1ù24@SlE &dive 15 . 10/21Æ8 3

E Archivé 16 - 10¡ W008 6

B nsALsê¡vãadA gwndo$Nr

EApp¡còlhElilhl E*pbEr

EoDùsfl0s.sdonEsduEl syddEMiluätSftrE wmdoM tuwæh.l

lZ5l2@1:39:234M

Y VewÍlEseilh

Ø ÐùeltrEodd

FiguraL2-6 Vendo logs de erro e evento

Page 373: Livro_SQL

372

Problemas de espaço no banco de dadosOs erros mais comuns que você enconlrarâ estáo relacionados à falta de espaço para

arquivos de dados ou de iog.

Quando você fica sem espaço no log de transaçáo , toda atividade de gravação no banco

de dados para. Você ainda pode ler dados do banco de dados, mas qualquer operaçáoque tente uma gravação será revertida e retornarâ o erro 9002 para o aplicativo e gra-

varâ o erro no log de erro do SQL Server e no 1og Application Event do Windows. Se umlog de transaçã,o ficar cheio, você pode executar as seguintes ações:

t FazeÍ backup do log de transação.

I Adicionar espaço em disco no volume em que o arquivo de log de transação está.

r Mover o 1og para um volume com mais espaço.

I Aumentar o tamanho do arquivo de log de transação.

r Adicionar outro arquivo de log em um volume de disco que tenha espaço.

A primeira açáo que você deve execufat é, fazer um backup do log de transação. Contu-

do, o backup do log de transaçáo poderâ não liberar espaço suficiente dentro do log para

ser reutilizado, caso ocorra uma das coisas a seguir:

I O banco de dados estâpafticipando de replicação e o banco de dados de distribuiçãonáo estâ disponível.

r Você tem uma transaçáo aberla.

r o Database Mirroring está em pausa.

I O banco de dados de espelho eslilatrasado em relação ao principal.

r Uma varcedura de log está em execução.

r O SQL Server náo consegue aumentar o tamanho de um arquivo rápido o suficiente.

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

NOTA Aumentando espaço de log de transação

Se um backup de log de transação não liberar espaço suficiente no log para ser reutilizado,você precisará adicionar espaço no log de transação aumentando o espaço em disco disponí-vel. A maneira mais comum de aumentar o espaço disponível em disco é adicionar um segun-do arquivo de log no banco de dados em um volume de disco que tenha espaço livre.

Se um banco de dados fica sem espaço em disco, é gerado um erro 1 101 ou 1 105. Enquan-

to o banco de dados estiver sem espaço, você náo podeút inserir novos dados. Você pode

aumentar o espaço disponível em um banco de dados adicionando um arquivo no grupo

de arquivos apropriado, em um volume de disco que tenha mais espaço disponível.

Você poderia ficar tentado a adicionar um novo grupo de arquivos com arquivos em umvolume de disco com espaço, mas isso náo resolve o problema de espaço. Todos os seus

dados estáo sendo gravados em tabelas dentro do banco de dados. Uma tabela é arma-zenada em um único grupo de arquivos ou é mapeada em uma função de partiçáo que

espalha alabela em vários grupos de arquivo. Quando você adiciona um novo grupo de

arquivos, nenhuma das tabelas ou esquemas de partiçáo existentes pode usar esse novo

Page 374: Livro_SQL

grupo para armazenar dados que estão sendo gravados nos objetos existentes no bancode dados. Para aumentar o espaço disponível e eliminar os erros 110111105, os arqui-vos precisam ser adicionados em grupos de arquivo existentes no banco de dados.

DICA Crescimento de arquivo

Antes de adicionar arquivos em grupos de arquivo, você deve primeiro verificar se os arquivosde dados estão com o recurso de crescimento automático desativado. Se o crescimento au-tomático estiver desativado e o volume de disco ainda tiver espaço, você poderá aumentar oespaço disponível apenas aumentando o tamanho dos arquivos existentes.

Capítulo L2 r Monitorando o Microsoft SQL Server

o banco de dados tempdb é um caso especial que precisa ser observado atentamente.Ficar sem espaço em tempdb causa sérios problemas paÍa uma variedade de processos.Além das tabelas temporárias locais e globais que qualquer usuário pode criar, o aÍma-zenamento em tempdb é usado para o seguinte:

I Tabelas de job para consultas GROUP BY ORDER BY e UNION

I Tabelas dejob para operações de cursores e spool

r Tabelas de job para criarlreconstruir índices que especificam a opção SORT_IN_TEMPDB

I Arquivos de job para operações de hashing

Tempdb também é usado para armazenamento de versão. o atmazenamento de versáoé utilizado pan àrmazenar versão de linha para o seguinte:

I Criaçáo de índice online

r Reconstrução de índice online

r Transações em execuçáo sob nível de isolamento de snapshot (snapshot isolationIevel)

I Transações em execução em um banco de dados com a propriedade Read Commit-ted Snapshotativada

r Mulriple Active Result sets (MARS)

Se tempdb ficar sem espaço, todos os bancos de dados de uma instância poderáo ser afe-tados. Nos casos graves, todos os aplicativos que estão em execuçáo em uma instânciapodem parar de funcionar. Além dos erros 1101, 1105 e 9002, tempdb gemâ os erros3958,3959,3966 e 3967, quando forem encontrados problemas de espaço îo armaze-namento de versão.

373

@ otto DE E*AME

Para o exame, você deve conhecer os códigos de erro comuns para problemas de espaço, oque cada código de erro significa e como corrigir os problemas que geraram os erros.

MELHORES PRÁTICAS Erros de falta de espaço

Ficar sem espaço é um problema sério que deve ser evitado a todo custo. A maioria dos admi-nistradores de banco de dados (DBAs) reage aos problemas. Em vez disso, você deve gerenciar

Page 375: Livro_SQL

374 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

suas instâncias preventivamente, para garantir que não fique sem espaço. Você pode gerenciar

espaço preventivamente criando alertas para notificar um operador quando a quantidade de

espaço livre tiver caído abaixo de um limite especificado, normalmente de 10 a 15%. Você

também pode ser notificado imediatamente se ocorrer um erro de espaço, criando alertas no

SQL Server Agent.

t'teste rápido

1. Quais são os principais lugares para se encontrar mensagens de erro e infor-mativas sobre o mecanismo de banco de dados?

2. Quais são os três códigos de erro gerados quando você fica sem espaço para

um banco de dados?

Respostas

1. Você usa o log de erro do SQL Server e o logApplication Event do Windowspara mensagens sobre o mecanismo de banco de dados. Se estiver fazendo

auditoria de logins e logouts da instância, você usa o log de erro do SgL Server

e o log Security do Windows. O log System Event do Windows tambêm fornece

informações sobre hardware e sistema operacional, úteis para solucionar umproblema de mecanismo de banco de dados.

2. Yocê. recebe um erro 9OO2 quando fica sem espaço no log de transação e umerro 1 101 ou 1 105 quando os arquivos de dados estão sem espaço.

PRÁTtcA Criando alertas de falha

Nos exercícios a seguir, você vai criar alertas do SQL Server Agentpata uma variedade

de erros de banco de dados.

Neste exercício, você vai criar alertas para erros de armazenamento de versáo em tempdb.

1. No Object Explorer, expanda o nó SQL ServerAgent.

2. Clique com o botão direito do mouse no nó Alerts e selecione New Alert.

5. Chame seu alerta de Full Version Store.

4. Selecione o banco de dados tempdb.

5. Selecione Error Number e especifiqu e 3959 para o número do erro, como mostrado

naFigura l2-7.

6. Selecione a pâgina Response e selecione um operador para notificar por e-mail.

7. Selecione apâgina Options, marque acaixa de seleção E-mail e configure a opção

Delay Between Responses para 1 minuto, como mostrado na Figura 12-8.

Clique em OK.8.

9. Repita o processo para criar um alerta chamado Forced Version Store Shrink para

o erco 3967.

Page 376: Livro_SQL

Capítulo L2 r Monitorando o Microsoft SQL Server

Figura L2-7 Especificando número de erro.

Figura 12-8 Especificando um atraso entre respostas.

Page 377: Livro_SQL

376 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

10. Repita o processo para criar um alerta chamado Row Version Not Found para o

eno 3958.

11. Repita o processo paracfiaÍ um alerta para o erco3966. Como os nomes de alertadevem ser únicos e existem dois números de erro que indicam o mesmo problema,adicione um incremento no nome do segundo alerla, Row Version Not Found2.

Neste exercício, você vai criar um alerta para quando o log de transação estiver cheio.

1. Clique com o botáo direito do mouse no nó Alerts e selecione New Alert.

2. Chame seu alerta de Transaction Log Full.

3. Selecione <All Databases>.

4. Selecione Error Number e especifique 9OO2 paÍa o número do erro.

5. Selecione a pâgina Response e selecione um operador para îolificar por e-mail.

6. Selecione a pâgina Options, marque a caixa de seleção E-mail e configure a opçãoDelay Between Responses para 1 minuto.

7. Clique em OK.

Neste exercício, você vai uiar um alerta para quando um banco de dados estiver semespaço.

1. Clique com o botáo direito do mouse no nó Alerts e selecione New Alert.

2. Chame seu alerta de Database Full.

3. Selecione <Al1 Databases>.

4. Selecione Error Number e especifique 11O1 para o número do erro.

5. Selecione apâgina Response e selecione um operador para notificar por e-mail.

6. Selecione a pâgina Options, marque a caixa de seleção E-mail e configure a opçáoDelay Belween Responses para 1 minuto.

7.

8.

Clique em OK.

Resumo da lição

Repita o processo pancriar um alerta parao erro 1105, chamado Database Full2.

r O log de erro do SQL Server contém informações de configuraçáo sobre inicializa-ção de instância, erros, stack dumps (despejos de pilha) e mensagens informativassobre sua instância.

r O 1og Application Event do Windows contém mensagens de início/parada de servi-

ço, mensagens informativas de evento importantes, erros e tudo de um comandoRAISERROR que utiliza o parâmetro WITH LOG ou especifica o nível de gravidade16 ou mais alto.

Page 378: Livro_SQL

r O Log File Viewer permite ver logs de erro e de evento combinados em uma única lis-ta, em ordem cronológica. O Log File Viewer também permite filtrar e pesquisar logs.

I Um erro 1 101 ou 1 105 ocorre quando um banco de dados fica sem espaço.

r O erro 9002 ocorce quando um log de transaçáo está cheio.

r Quando o armazerlamento de versão encontrar problemas de espaço, você deveráreceber erros 3958, 3959, 3966 e 3967.

r Você pode configurar alertas no SQL Server Agent para nolificâ-lo quando ocorre-rem quaisquer erros relacionados a espaço.

I Você pode configurar alertas de condição de desempenho no SQL ServerAgent paranotificá-lo quando o espaço de armazenamento estiver ficando exíguo.

Revisão da lição

Responda a pergunta a seguir para lestar seu conhecimento sobre aLição 3. Apergantatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

Capítulo 12 r Monitorando o Microsoft SQL Server 377

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. Quais tipos de eventos do SQL Server são registrados no logApplication Event doWindows? (Escolha todas as respostas que se aplicam.)

A. Stack dumps

B. Mensagens de configuração de inicíalízaçâo

C. Falhas de job (lob failures)

D. Processos eliminados

Page 379: Livro_SQL

Lição 4: Diagnosticando falhas de serviço

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

O SQL Server e o SQL Server Agent sáo executados como serviços dentro do Windows.Além das falhas do SQL Server devidas a problemas de hardware ou software, você

também pode ter falhas de inicializaçáo. Nesta liçáo, você vai aprender a diagnosticar e

corrigir os problemas mais comuns quando um serviço não consegue iniciar.

Após esta lição, você será capaz de:

I Localizar informaçöes sobre uma falha de inicialização de serviço

I Diagnosticar a causa de uma a falha de inicialização de serviço

I Corrigir as causas comuns de falhas de inicialização de serviço

Tempo estimado para a lição:20 minutos

Localizando falhas de inicialização de serv¡çoVocê pode usar dois utilitários paÍa ver o estado e a configuraçáo de serviços do SQL

Server - o console Windows Services e o SQL Server Configuration Manager.

Conforme discutimos no Capítulo 11, "Projetando a segurança do SQL Server", toda ins-tância tem uma chave mestra de serviço na raiz da hierarquia de criptografia. A chave

mestra de serviço écriptografada usando-seaconÍa de serviço e a senha da conta de

serviço do SQL Server. O console Windows Services náo contém o código necessáriopan criptogtafat uma chave mestra de serviço; portanto, você nunca deve usar o conso-le Windows Services para aherut a confa de serviço ou a senha da conta de serviço.

Configuration ManagerO SOL Server Configuration Manager Server é instalado em toda máquina que estejaexecutando uma instância do SQL Server 2008 e não pode ser removido. Ao contráriodos outros utilitários do SQL Server, o SQL Server Configuration Manager não pode serusado para gerenciar instâncias em várias máquinas. O objetivo do SQL Server Confrgu-ration Manager é configurar e gerenciar os serviços do SQL Server, configuraçáo de rede

e cliente nativo. A partir do console principal, mostrado na Figura 72-9, você pode vero estado, o modo de inicialização e a conta de serviço, assim como iniciar, parar, fazeruma pausa e reiniciar um serviço.

MELHoRES PRÁTlcAs Gerenciando serviços do SQL Server

É sempre muito mais fácil lembrar e impor planos de administração que não tenham muitasexceçöes. Você pode alterar com segurança algumas das opções dos serviços do SQL Serverusando o console Windows Services; no entanto, outras não podem ser alteradas dessa ma-neira de uma forma segura. Portanto, a maioria dos ambientes em que trabalhei determinavaque todas as alteraçöes feitas em um serviço do SQL Server deveriam ser realizadas com o SQL

Server Configuration Manager:

Page 380: Livro_SQL

; i !h frokdstuMssQmvR: :- EIF Ro@È tor nslNcE2i : E- toohE tu ssril@á g id Nô68 di.nt 1o,o GtuôbbnTd cmtp.m''{nr*

Capítulo L2 r Monitorando o Microsoft SQL Server

FdLbtFltdMtãJ#0qsRvER) Rtm Mðnud

FúLdtFlBMffi06añE2) 5t@ed Mðnud

FdLþtFlHMh&(¡6AKE3) 5t@d HaNd

sdverÁdFÈtuüc6{ffiFRF) Ms aùhó&tuverRerbEgviG(@FwR) Rffiq auMð*

Figura 12-9 SQL Server Configuration Manager.

Remote Desktop

Atualmente, muitas empresas estão executando o SQL Server em máquinas de-dicadas. Infelizmente, muitas delas também têm implementado uma política àmaneira de "separação de tarefas". Sob uma política assim, os DBAs de SQL Serverdevem gerenciar somente o SQL Server, enquanto os administradores de sistemado Windows devem gerenciar o sistema operacional Windows e o hardware emque o SQL Server está sendo executado.

O que as empresas não têm levado em conta na implementação dessa política é

que o SQL Server é intimamente ligado ao sistema operacional e ao hardware.Quando uma máquina com SQL Server está funcionando normalmente, os DBÄsnão precisam acessar o sistema operacional nem o hardwate, a náo ser para verifi-car o conteúdo e o espaço disponível em volumes de disco. Quando uma máquinacom SQL Server náo eslâ funcionando normalmente, os DBAs precisam acessar o

sistema operacional, o hardware e ferramentas de diagnóstico.

Quando é necessário solucionar problemas de inicialização de serviço, você pre-cisa usar Remote Desktop para se conectar no console da máquina em que o SQL

Server está sendo executado para acessar o SQL Server Configuration Manager.Você também precisa acessar volumes de disco, o Windows Event Viewer e logsde erro para solucionar problemas. Se um DBA não pode acessar de forma remotaem um servidor com SQL Server, precisa encontrar alguém com acesso e, entáo,tentar soiucionar as falhas de inicializaçâo de serviço pelo telefone, esperando que

379

0

0

*80

æo616Æ60

0

ffi4

Page 381: Livro_SQL

380 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

a pessoa no outro lado da linha esteja vendo as informações corretas e executandoas ações que estão sendo transmitidas. Em muitos casos, corrigir um problema de

inicialização de serviço quando o DBA não tem acesso remoto à máquina transfor-ma um problema que poderia demorar de dois a três minutos para corrigir em umainterrupção séria que poderá demorar horas antes que seja finalmente resolvida.

Se você não consegue se conectar em sua instância de SQL Server, a primeira coisa queprecisa verificar é se o SQL Server está funcionando. Se o serviço estiver no esfado [ní-cíalízando, o SQL Server está no processo de inicializaçáo e deveÉt, estar disponível emum curto perÍodo de tempo.

Se o serviço estiver no estado parado, o SQL Server foi encerrado devido a uma daspossibilidades a seguir:

r O serviço está configurado no modo de inicializaçâo manual ou desativado e a mâ-quina foi reinicializada.

¡ O serviço foi encerrado por alguém.

r O SQL Server encontrou um erro crítico e encerrou o serviço.

O primeiro lugar em que você deve olhar quando o serviço do SQL Server estiver noestado parado é o log de erro do SQL Server ou o log Application Event do Windows.Se houve erros críticos e, como resultado, a instância do SQL Server foiparada, os doislogs de erro contêm mensagens de diagnóstico adicionais que podem ser usadas parasolucionar problemas de hardware, os quais foram abordados na Lição 5, "Diagnosti-cando falhas de hardware".

Se a máquina foi reinicializada, os dois logs mostrarão uma mensagem dizendo "SQL

Server is terminating because of a system shutdown' (O SQL Server está terminando porcausa de um encerramento de sistema). Se alguém enceÍrar o serviço, entáo os dois logsmostrarão uma mensagem dizendo "SQL Server is terminating in response to a 'stop'request from Service Control Manager" (O SQL Server estâ ferminando em resposta aum pedido de'parada' do Service Control Manager). Desde que você náo veja quaisquererros de hardware adicionais nos logs, bastaú iniciar o serviço novamente.

Depois que o serviço tiver reiniciado com sucesso, você precisará se conectar e verificarse todos os bancos de dados estão online e acessíveis e se os aplicativos podem se co-nectat com sucesso. Após o estabelecimento das operações normais, você precisará des-cobrir quem encerrou o serviço ou reinicializou a máquin a para garantir que o problemanão aconleça novamente.

O modo de inicialização normal dos serviços do SQL Server e do SQL Server Agentem uma máquina independente é Automatic. Se os serviços foram configurados comoManual ou Disabled, você deverá descobrir quem fez a aheraçáo e por que, e garantirque as alterações náo afetem as operações. Você pode mudar o modo de inicializaçã,o apartir daguia Service, clicando com o botão direito do mouse no serviço e selecionandoProperties, como mostrado na Figura 72-70.

Page 382: Livro_SQL

Capítulo 1"2 I Monitorando o Microsoft SQL Server

Figura 12-10 Modo de inicialização de conta de serviço.

NOTA Modo de inicialização

Um serviço com o modo de inicialização Disabled aparece como Other na coluna Start Modeda janela principal do SQL Server Configuration Manager.

CUIDADO lnstâncias em cluster do SQt Server

O modo de inicialização de todos os serviços do SQL Server para uma instalação agrupada(clustered) deve ser configurado como Manual. Não altere o modo de inicialização de nenhumserviço em uma instalação agrupada (clustered). Os serviços estão sendo controlados peloserviço de cluster e configurar quaisquer serviços com o modo de inicialização Automatic geraproblemas significativos em um cluster se algo for reinicializado.

381

Contas de serviçoPara iniciar o SQL Server, a conta de serviço do SQL Server precisa tervârias permissões,

incluindo as seguintes:

r Acesso Read e Write à pasta (ou pastas) onde os arquivos de dados/log dos bancosde dados de sistema esíáo atmazenados

I Permissões Read e Write nas chaves de registro do SQL Server

r Aurcridade Log On As A Service

r Autoridade Sysadmin dentro da instância do SQL Server

Se o serviço do SQL Server começa e é encerrado imediatamente, você provavelmenteestá lidando com um problema na conta de serviço. O primeiro passo deve ser verificarse existe uma das condições a seguir na conta de serviço:

r Conta excluída

r Conta bloqueada

Page 383: Livro_SQL

382 Kit de Treinamento MCTS (Êxame 70-432): Microsoft SQL Server 2008

I Conta desativada

I Senha expirada

Se a conta de serviço tiver sido excluída, você precisaút pedilr ao administrador de sis-tema para que a recrie e, enlâo, reconfigure a conta de inicializaçáo na guia Log On dacaixa de diálogo Properties do serviço SqL Server, mostrada na Figura 12-11.

Se a conta foi desativada, o administrador de sistema deverâ ativâ-la novamente, antesque você possa reiniciar o serviço SQL Server. Para uma reinicialização, você deve traba-lhar junto ao administrador de sistema para descobrir como a conta de serviço foi exclu-ída ou desativada e formular um modo de garantir que isso não aconteça novamente.

Se a senha expirou, o administrador de sistema deverâ desativar a expiração de senhada conta. Quando a expiração de senha estiver desativada, você deverá alferar a senha,alualizar a senha da conta de serviço na guia Log On e, em seguida, reiniciar o serviço.

Se a conta de serviço foi bloqueada, você deve alterar a senha imediatamente. Antes de

desbloquear aconta de serviço, os administradores de rede e de sistema precisarão exe-

cutar um diagnóstico de segurança detalhado na rede. Como uma conta de serviço nuncadeve ser usada para nada, exceto executar o serviço associado, uma conta de serviço blo-queada significa que alguém tentou utilizá,-la para outros propósitos, violando os planosde segurança. Você precisa isolar a pessoa ou o aplicativo que tentou usar a conta de servi-

ço e certificar-se de que a violação de segurança sejatratada, antes de desbloquear a conlae iniciar o backup do serviço SQL Server. Embora possa parecer absurdo manter fota do arum sistema SQL Server fundamental até isolar acausa de um bloqueio de conta de serviço,se a pessoa ou o aplicativo conseguisse consciente ou inconscientemente decifuar a senhadepois que a conta foi bloqueada, iniciar o backup do SQL Server antes de isolar a violaçãode segurança garantiria à pessoa acesso a todos os dados contidos na instância.

Se todas as verificações de conta de serviço forem aprovadas, então você provavelmenteestá lidando com um problema de permissão.

Figura 12-11 Logon de conta de serviço.

Page 384: Livro_SQL

Quando o SQL Server inicia, o banco de dados master é o primeiro a ficar online. Depoisque o banco de dados master fica online, o banco de dados tempdb ê,reuiado. Acriaçáodo banco de dados tempdb faz oconer uma gravação na pasta (ou pastas) que aïmaze-na os arquivos de dados e de log desse banco de dados. Se o SQL Server náo conseguerecriar o banco de dados tempdb, o serviço é encerrado. As causas mais comuns para o

SQL Server não conseguir recriar o banco de dados tempdb sáo as seguintes:

r A conta de serviço do SQL Server náo tem permissões suficientes.

r A pasta náo existe ou está indisponível.

Se a pasta não existe, você precisa criâ-la ou colocar o volume de disco de tempdb no-vamente online, antes de reiniciar a instância do SQL Server. Se você náo conseguircolocar o volume de disco novamente online ou os problemas de criaçáo de tempdbforam decorrentes de um erro de configuração, pode iniciar o SQL Server no modo mo-nousuário usando o parâmetro de inicializaçâo -m, aherar alocalizaçáo de tempdb e,

em seguida, reiniciar a instância normalmente.

Se a pasia estiver disponível, você deverá procurar a seguinte sequência de eventos nolog Application Event do Windows:

r Inicialização de serviço

I Erro de ativação de dispositivo ou de arquivo não encontrado

I Encerramento de serviço

Essa sequência de eventos indica que a conta de serviço do SQL Server náo tem permis-sões suficientes para acessar o arquivo (ou arquivos) de dados ou de log para o banco de

dados master ou tempdb. Se você mudar o nome dos arquivos de dados e de log de tem-pdb, reiniciar a instância e vir um arquivo chamado Tempdb.mdf de tamanho 0 onde esse

arquivo deve estar localizado, então o problema é nos arquivos de dados/logde tempdb.

Depois que você corrigir os problemas de permissão, o SQL Server iniciarâ normalmente.

Capítulo L2 r Monitorando o Microsoft SQL Server 383

NOTA Erros de ativação de dispositivo

Sempre que você vir um erro de ativação de dispositivo, o SQL Server não conseguiu acessarum arquivo de dados ou de log de um banco de dados. Os erros de ativação de dispositivo dosbancos de dados master e tempdb impedem a inicialização da instância, enquanto os erros deativação de dispositivo de qualquer outro banco de dados só torna o banco de dados indis-ponível. Você deve sempre investigar qualquer erro de ativação de dispositivo, pois ou existeuma falha no subsistema de disco ou um administrador está encerrando incorretamente umsistema de armazenamento enquanto ele está sendo usado.

Parâmetros de inicializaçãoSe você encontrar um erro de alivaçáo de dispositivo relacionado ao banco de dados master,a sequência de eventos que verá no log Application Event do Windows será a seguinte:

r Inicialização de serviço

I Erro de ativaçâo de dispositivo ou arquivo náo encontrado

¡ Encerramento de serviço

Page 385: Livro_SQL

384 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

As causas mais comuns de um erro de ativação de dispositivo durante a iniciaTízaçã,o doSQL Server sáo as seguintes:

I A conta de serviço não tem permissões suficientes.

r O sistema de armazenamento está offline.

r Os parâmeÍros de inicializaçáo foram alterudos incorretamente.

Você deve verificar primeiro se o sistema de armazenamento está online, se a pasta (oupastas) que contém os arquivos do banco de dados master existe, se os arquivos de da-dos e de log master existem e se a conta de serviço tem permissões na pasta (ou pastas).Se você não vir quaisquer problemas nas permissões, arquivos e pastas, eníão deverâverificar as opções de inicializaçáo de serviço, como mostrado na Figura 1,2-72.

Figura L2-L2 Parâmetros de inicialização.

os parâmetros de inicializaçâo do serviço podem ser inseridos diretamente, clicando-sena lista suspensa e digitando-se as configurações, como mostrado na Figura 12-13.

ogräm1 0. M55QLSERVERIM55QLIDATAÏmåster. mdf ; -eC I lProgram

Figura 12-13 Vendo logs de erro e de evento.

o parâmetro -d lista alocalização e o nome do arquivo de dados master. o parãmetro -llista alocalizaçáo e o nome do arquivo de log de transação master. O parâmetro -elistao nome e alocalizaçáo do log de erro do SQL Server. Uma das alterações mais comunsque você faz nos parâmetros de inicializaçáo é adicionar sinalizadores de rastreamentousando o parâmetro -7. Contudo, a náo ser que você tenha muito cuidado e combata

Page 386: Livro_SQL

seus instintos de digitaçáo normais, poderâ gerar um erro que impeça ainicializaçã,o da

instância. Se você examinar cuidadosamente a Figura 12-13 , verâ que os parâmetros de

inicialização estão separados por um ponto e vírgula (;). Contudo, seu instinto normal é

colocar um espaço após o ponto e vîrgula. Se você introduzir um espaço após um ponto

e vírgula, o SQL Server inferpretarâ o ponto e vírgula e tudo que vier depois dele comoparte do parâmetro anterior. Como resultado, em vez do log de transação mestre se cha-

mar <díretórío>\mastlog.ldf, o sQL Server determinará que o nome do arquivo de logde transação master é <díretórío>\masterlog.ldfi -T<flag de rastreamento>. Portanto,se você acabou de alterar os parâmetros de inicializaçáo e a instância náo inicializa, aprimeira coisa que sempre deve procurar éum espaço em lugar incorreto.

Capítulo L2 r Monitorando o Microsoft SQL Server

NOTA DBAs de SQL Server experientes

Além dos anos a mais na função de DBA, o que mais diferencia alguém com experiência dealguém sem experiência é que a pessoa experiente conseguiu sobreviver às coisas que deramerrado. Nunca revelarei muitas coisas a que consegui sobreviver com o passar dos anos. Se-

guindo muitas das melhores práticas, quadros, notas e alertas que você encontrará neste livro,

espero que consiga evitar muitos dos erros que eu e muitos outros cometeram no decorrerdos anos.

Se a pasta (ou pastas) que contém os arquivos de dados e de log do banco de dadosmasÍer está acessÍvel e os arquivos existem, você deve verificar primeiro se a conta de

serviço do SQL Server tem permissões de leituralgravaçáo na pasta (ou pastas). Se a

conta de serviço do SQL Server tem permissões suflcientes e você ainda estâ recebendo

erros de ativaçâo de dispositivo nos arquivos de banco de dados mestres, enlãLo eslâcom um banco de dados mestre corrompido que só pode ser reparado pela instalação do

SQL Server. Se for necessâfio repanr uma instalaçáo de SQL Server corrompida, você

deverâ iniciar a instalação do SQL Server, selecionar apâginaMaintenance e, em segui-da, iniciar o Repair ''lñzard.

385

DICA DE EXAME

Para o exame, você deve se concentrar nos cenários de erro mais comuns, a maioria dos quaistrata de permissöes de segurança. Você precisa saber quais utilitários deve usar para solucionaros erros. Você também deve saber reconstruir um banco de dados mestre no SQL Server 2008,que é acessado usando-se o novo lnstallation Center: mesmo que ainda utilize a instalação. As

perguntas favoritas do exame testam se você conhece a maneira "nova" ou "melhorada" deexecutar uma ação na versão atual do SQL Server em contraste com o método (ou métodos)da versão anterior.

cUlDADo Bancos de dados de sistema

O SQL Server tem quatro bancos de dados de sistema em cada instância: master, model, msdbe tempdb. Se você tiver configurado replicação, também verá um banco de dados chamadodistribuction. O SQL Server tem um sexto banco de dados de sistema, introduzido pela pri-meira vez no SQL Server 2005, chamado mssqlsystemresource. O banco de dados mssqlsyste-mresource contém a maior parte do código de procedimento armazenado (stored procedure),função, DMV e outros que acompanham o SQL Server. O banco de dados mssqlsystemresourceé fundamental para as operações do SQL Server e impede que um servidor com SQL Server

Page 387: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

seja iniciado. lnfelizmente, esse banco de dados fica oculto. Portanto, você precisa procurarerros de ativação de dispositivo relacionados ao banco de dados mssqlsystemresource, assimcomo aos bancos de dados moster e tempdb.

r/teste rápido

1. O que signifrca um erro de ativação de dispositivo?

2. Erros em quais três bancos de dados impedem ainicializaçã,o do SQL Server?

Respostas

1. Um erro de ativaçãLo de dispositivo significa que o SQL Server náo consegueencontrar ou acessar um arquivo de dados ou de log.

2. Erros nos bancos de dados mcster, tempdb e mssqlsJstemresource podem im-pedir que uma instância sejainicializada. Erros em todos os outros bancos de

dados apenas tornam o banco de dados problemático inacessível até que vocêpossa corrigir o problema.

PRÁTlcA Solucionando erros de inicialização de serviçoNos exercícios a seguir, você vai corrigir um problema de inicialização relacionado à

incapacidade do SQL Server de encontrar os arquivos do banco de dados mestre.

Neste exercício, você vai mudar apasta de inicialização do arquivo de banco de dadosmaster.

1. Abra o SQL Server Configuration Manager e selecione SQL Server Services.

2. Pare o serviço SQL Server de sua instância.

3. Abra o Windows Explorer e navegue afé a pasfa que contém master.mdf e mas-tlog.ldf de sua instância (comumente encontradas em Microsoft SOL Server\MSSQLl 0. < instância >\MSSQL\Data).

4. Mude o nome master.mdf paramaster.mdf2.

5. Mude o nome mastlog.ldf paramastlog.ldf2.

6. Tente iniciar sua instância de SQL Server.

7. Inspecione o logApplication Event do Windows e o log de erro do SQL Server, comomostrado aqui.

Neste exercício, você vai corrigir os erros de ativaçáo de dispositivo introduzidos pelaalteraçã,o feita no Exercício 1.

1. No SQL Server Configuration Manage¡ clique com o botáo direito do mouse no ser-viço SQL Server e selecione Properties.

Page 388: Livro_SQL

2.

3.

4.

5.

Selecione a gaia Advanced.

Mude os nomes de arquivo para os parâmetros de arquivo de dados master e delog.

Clique em OK.

Inicie a instância.

Capítulo L2 r Monitorando o Microsoft SQL Server

erent f:liã.1ì,i:*¡ i!i::.]åi:::':.:.!;t:;lrT:,¡.'::....:t:::¡ì,¡lr:,:¡!: ,:;:i::È

--__-_-.[Dðte: 12/7/2008 Source: MSSQLSEFVEÉ I + I ITime: 4:0&48 PM Cèbgor!: Server

-i

IItpe: LrEr LventlD: 1/113 +. 'l ¡

rrsn N/A *ltCompute¡: HoTEKz __

IDescilptionr I

Dêtðr O Bytes Õ\y'ords

loooa: o? oo ûo oo 4a ût 4f ûû - - -E-o- 4{looro, s+ oo +s oo +u oo ¡z oo r-¡-x-2. El

6. Inspecione o log de erro do SQL Server e o 1og Application Event do Windows parauma sequência de inicialização normal.

Resumo da lição

r O SQL Server Configuration Manager é usado para configurar e gercnciar serviços,protocolos e o SQL Native Client.

r A causa mais comum de erros de inicialização de serviço são as permissões.

I Um erro de alivação de dispositivo indica que o SQL Server não consegue encontrarou não consegue gravar em um arquivo de dados ou de 1og.

r Ao se alterar os parâmetros de inicialização do serviço SQL Server, um ponto e vír-gula separa os parâmetros e você precisa certificar-se de não introduzir um espaço

após um ponto e vírgula.

Revisão da lição

Responda a pergunta a seguir para testaÍ seu conhecimento sobre aLiçáo 4. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

d9 42 OO OO r0 00 00 00o? 00 00 00 4€ oo 4f oo54 ûO 45 OO 4¡ OO 32 ûO

387

-L .o¡l .ll cancel. li Appry :

E_-_---- - - .H.0-r E_R-2_

Page 389: Livro_SQL

388 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final doIivro.

1. Você é o DBA da Blue Yonder Airlines e o telefone toca. O aplicativo de reserva depassagens principal acabou de sair do ar e não pode ser reconectado no banco dedados. Você tenta se conectar no SQL Server e descobre que ele nâo estát acessível.Você verifica que o serviço parou e ao inspecionar os logs de erro, descobre umgrande número de erros de ativação de dispositivo. Qual ê a causa mais provável doproblema?

A. Alguém excluiu os arquivos do banco de dados de emissáo de passagens.

B. O sistema de armazenamento em disco sob os bancos de dados master ou tem-pdb saiu do ar.

C. O sistema de atmazenamento em disco sob o banco de dados de reserva depassagens saiu do ar.

D. A conta de serviço do SQL Server foi bloqueada.

Page 390: Livro_SQL

Lição 5: Diagnosticando falhas de hardwareEmbora a maioria das falhas encontradas no SOL Server seja relacionada a processosou à segurança organizacional, com o tempo todo hardware falha. Nesta lição você vaiaprender a diagnosticar as causas dos problemas de hardware para que possa substituiros componentes apropriados.

Após esta lição, você será capaz de:

I Diagnosticar falhas devidas a erros de hardware

Têmpo estimado para a lição:20 minutos

Capítulo L2 r Monitorando o Microsoft SQL Server

Unidades de discoAs unidades de disco são um dos últimos componentes de hardware com partes móveisque restam. Como elas contêm peças muito pequenas, com tolerâncias de folga muitoestritas entre os componentes e também sujeitam os componentes a velocidades e es-forços mecânicos extremamente altos, as falhas de hardware mais comuns ocorrem noaÍmazenamento em disco.

Ter uma única falha de disco geralmente não é problema, pois todos os seus bancos dedados devem estar armazenados em um sistema de discos com algum nível de RAID(Redundant Attay of lnexpensive Disks) que fornece um sobressalente. Contudo, umafalha em vários discos pode tftat o volume de disco inteiro do ar, tornando seus bancosde dados ou a instância inteira indisponível.

A primeira indicação de que você tem uma falha no sistema de discos são erros regis-trados no 1og System Event do Windows ou dentro do sistema de registros de seu grupoSAN (Storage Area Network) ou NAS (Network Attached Storage). Se os erros foremsérios o bastante para que um volume ou um grupo inteiro saia do a¡ você começatâimediatamente avü erros de ativação de dispositivo no log de erro do SQL Server, assimcomo no log Application Event do Windows.

Quando você encontrar erros de ativação de dispositivo e determinar que o sistema deaÍmazenamento onde os arquivos de dados ou de log eslã.o armazenados está indispo-nível, deve avisar o administrador de armazenamento de sua empresa.

Se o armazenamento de seus bancos de dados estiver ligado de forma local, você podeusar a pasta Disk Management dentro do Computer Management Console para determi-nar o estado dos volumes de disco, como mostrado na Figura 12-14. Os erros no aÍma-zenamento ligado de forma local podem ser diagnosticados, assim como possivelmentecorrigidos, usando-se o utilitário de linha de comando CHKDSK.

389

CUIDADO Grupos SAN e NAS

Quando seus bancos de dados estão armazenados em grupos SAN ou NAS, você sempre deveusar os utilitários especializados que acompanham seu grupo de armazenamento para diag-nosticar e reparar quaisquer erros de disco.

Page 391: Livro_SQL

390 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Figura L2-L4 Gerenciando discos ligados de forma local.

Memória e processadoresÉ muito raro um pente de memória RAM (memória de acesso aleatório) ou um processa-

dor simplesmente falhar. Mais provavelmente, você começa a receber erros esporádicosque ocorrem de forma aparentemente aleatória e a instância do SQL Server pode conti-nuar funcionando sem mostrar absolutamente nenhum erro. Você também poderâverstack dumps (despejos de pilha) no log de erro do SQL Server ou na pasta onde o log de

erro do SQL Server é armazenado.

Quando o SQL Server encontra um erro grave, é gerado um stack dump. Se o erro é re-

cuperável, o SQL Server continua a funcionar. Se o erro é grave o bastante, a instância é

encerrada. Como é muito raro estar diante do console da mâquina que está executandoo SQL Server, você não verâ as telas azuis quando ocorrer um erro STOP Portanto, aprimeira indicaçáo que você normalmente terá sobre problemas de memória ou proces-

sador será quando for gerado um stack dump.

Você deve ter um alerta enviado paÍa um operador, caso apareça uma entrada de stackdump no log de erro do SQL Server, no log Application Event do Windows ou no logSystem Event do Windows, ou se for criado um arquivo com a extensáo .mdmp na pastaqt e armazeÍra o log de erro do SQL Server.

Para diagnosticar um problema de memória ou de processador, você deve usar os utili-tários de diagnóstico que o fornecedor envia com o hardware.

@ o'.o DE E*AME

Para o exame, você precisa conhecer os erros mais comuns relacionados à falha de componen-tes de hardware.

Page 392: Livro_SQL

t't"rt" rápido

1. Quais erros você vê se o atmazenamento em disco sai do ar sob um banco dedados?

2. Quais erros você vê se há uma falha na memória ou no processador?

Respostas

1. Quando um volume de disco em que os bancos de dados estáo armazenadossai do ar, o SQL Server começa a registrar erros de aÍivação de dispositivo.

2. Se você estiver encontrando problemas de memória ou de processador, verá er-ros STOP Se for encontrado um erro de memória quando o computador estiverinicializando,vocêverâ um erro POST Tanto STOP como POST são acompa-nhados por uma tela azul com informações de diagnóstico adicionais.

Capítulo l-2 r Monitorando o Microsoft SQL Server

Resumo da liçãoI Uma falha séria do sistema de disco que tira o volume de atmazenamento do ar

registra erros de ativação de dispositivo e os bancos de dados afetados se tornaminacessíveis.

I Os erros de memória e de processador normalmente sáo intermitentes e geralmenteocorrem em conjunto comageração de um stackdump.

Revisão da lição

Responda a pergunta a seguir para testar seu conhecimento sobre a Lição 5. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

391

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. A Humongous Insurance o contratou para avaliar sua infraestrutura de SQL Server,fazer recomendações e gerenciar projetos para melhorar o ambiente de produção.Durante sua avaliação, você descobriu que os arquivos de banco de dados são ar-mazenados em dezenas de unidades e pontos de montagem diferentes. Os arquivosde dados e de log estão misturados com os arquivos de backup. Existem bancosde dados de sistema nas mesmas unidades de disco que os bancos de dados deusuário. Seu primeiro projeto é mover todos os bancos de dados de sistema paraunidades separadas dos bancos de dados de usuário. Você também vai mover obanco de dados tempdb para um armazenamento exclusivo em cada instância, poismuitas consultas muito mal escritas movem grandes volumes de dados através detempdb. O DBA de plantão estâ fazendo a manutençáo e testou os procedimentosvârias vezes em um ambiente de laboratório. Você recebe uma chamada dizendoque a primeira instância, após as mudanças de banco de dados, não é iniciaTizada.

Page 393: Livro_SQL

392 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Você verificou as permissões de conta de serviço para a pasta que contém os arqui-vos de banco de dados master, viu que os arquivos do banco de dados master estãono lugar correto e que os parâmetros de inicialização estão corretos. Qual é, a causamais provável do problema?

A. O banco de dados mqster está corrompido.

B. O banco de dados de recurso mssqlsystøn está corrompido.

C. A conta de serviço não tem permissões para a pasta que contém os arquivos debanco de dados de tempdb.

D. Há um módulo de memória danificado no servidor.

Page 394: Livro_SQL

Lição 6: Resolvendo problemas de bloqueio e deadlockComo diz o ditado, "o SQL Server funcionaria perfeitamente, se náo fossem os usuários".Contudo, se náo houvesse usuários para trabalhar com os dados, os bancos de dadosque você está gerenciando seriam inúteis. Além disso, se você só pudesse ler dados deum banco de dados, não precisaria se preocupar com o fato de vários usuários tentaremtrabalhar com os mesmos dados. Evidentemente, em um banco de dados somente leitu-ra náo haveria nenhuma maneira de se inserir dados, para começo de conversa. Comovocê precisa ter dados em um banco de dados que sejam acessíveis e possam ser mani-pulados por vários usuários, deve haver um mecanismo para gerenciar o acesso conco-mitante, para manfer a consistência dos dados. Nesta lição você vai aprender como omecanismo de bloqueio do SQL Server gerencia o acesso e como soluciona problemas deprocessos que colidem, produzindo bloqueios (blocking) e deadlocks.

Capítulo 12 I Monitorando o Microsoft SQL Server

MAIS INFORMAçöES Bloqueio, obstrução e deadlock

Para ver uma discussão detalhada sobre bloqueio, obstrução, deadlock e níveis de isolamento,consulte o livro Microsoft SQL Server 2008 lnternols, de Kalen Delaney (Microsoft Press, 2009).

Após esta lição, você será capaz de:

I Localizar processos bloqueados

I Eliminar um processo

I Ver um gráfico de deadlock

Tempo estimado para a lição:20 minutos

Bloqueios

393

O SOL Server usa um mecanismo de bloqueio parcmanler a consistência dos dados paraacesso multiusuário. Um processo interno, chamado Lock Manager, determina o bloqueioapropriado a ser adquirido, por quanto tempo vai manter o bloqueio e decide quando osprocessos podem modificar dados de modo que as leituras sejam sempre consistentes.

O SQL Server tem sete modos de bloqueio e três tipos de bloqueio diferentes. Na maioriadas situações, você lida apenas com os três modos de bloqueio a seguir:

r Compartilhado

I Exclusivo

) Atualização

Os três tipos de bloqueio diferentes que podem ser adquiridos sáo: linha, pâgina e tabe-la. Os bloqueios podem ter escopo de sessáo, transaçáo ou cursor.

Um bloqueio compartilhado é adquirido para operações de leitura para impedir que osdados que estão sendo lidos sejam alterados durante aleitura. Como as operaçöes deleitura não podem intoduzir inconsistências de dados, você pode ter vários bloqueioscompartilhados no mesmo recurso ao mesmo tempo. Um bloqueio exclusivo é adquirido

Page 395: Livro_SQL

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

em um recurso que está sendo modificado e é mantido até que a modificação tenha ter-minado. Conforme o nome implica, você só pode ter um bloqueio exclusivo por vez emum recurso e todos os outros processos que precisam acessar o recurso devem esperaraté que o bloqueio exclusivo seja liberado. Um bloqueio de atualizaçãLo ê. um misto de

bloqueio compartilhado e exclusivo. Embora um bloqueio de atualização seja adquiridopara qualquer afuaTização, os bloqueios de atualizaçâo podem ser adquiridos durantequalquer ação que exija que o SQL Server primeiro localize os dados a serem modifi-cados. Um bloqueio de atualização começa adquirindo um bloqueio compartilhado norecurso, até encontrar os dados que precisam ser modificados; então, o bloqueio com-partilhado muda para bloqueio exclusivo, enquanto os dados estáo sendo alterados.

Cada modo de bloqueio pode ser adquirido em uma linha, página ou r.abela. o LockManager determina o tipo de bloqueio a ser adquirido com base em um limite de re-curso muito agressivo, comumente referido como a regra dos 2o/o, eue é, projetada paraminimizar o número de bloqueios que precisam ser adquiridos e gerenciados, pois cadabloqueio adquirido também consome memória. Se o SQL Server determinar que maisde 2o/o das linhas em uma pâgina precisarão ser acessados, um bloqueio de pâgina serát

adquirido. Do mesmo modo, se mais de2o/odas páginas de uma tabela precisarão seracessadas, será adquirido um bloqueio de tabela.

O Lock Manager usa estatísticas de distribuição, também utilizadas pelo Query Op-timizer, pan deferminar o tipo de bloqueio a ser adquirido. Como as estatísticas de

distribuição nem sempre sáo precisas ou nem sempre existem, o Lock Manager tem ummecanismo chamado escalada de bloqueio (lock escalatíon) que permite a um bloqueioser promovido para outro tipo. O SQL Server pode promover um bloqueio de linha parabloqueio de tabela ou um bloqueio de página para bloqueio de tabela.

NOTA Escalada de bloqueio

É uma concepção errada muito comum dizer que o SQL Server promove bloqueios de linha para

bloqueios de página. Os bloqueios de linha só são promovidos para bloqueios de tabela.

Níveis de isolamento de transaçãoOs nívets de ísolamento afeÍam a manefta como o SQL Server manipula transações,assim como a duraçáo dos bloqueios adquiridos. O SQL Server tem cinco níveis de iso-lamento, que estão descritos naTabela 72-4.

Tabela 12-4 Níveis de isolamento de transação

READ Os dados que não foram efetivados podem ser lidos. Embora umUNCOMMITTED bloqueio exclusivo ainda obstrua outro bloqueio exclusivo, as

operaçöes de leitura ignoram um bloqueio exclusivo.

READ COMMITTED Este é o nível de isolamento padrão do SQL Server. Um bloqueio exclusivoobstrui bloqueios compartilhados, assim como bloqueios exclusivos. Um

bloqueio compartilhado obstrui um bloqueio exclusivo. Os bloqueioscompartilhados serão liberados assim que os dados forem lidos.

(continua)

Page 396: Livro_SQL

Tabela 12-4 Níveis de isolamento de transação (continuação)

REPEATABLE READ

READ SERIALIZABLE lgual a todas as constraints do nível de isolamento REPEATABLE READ.

Além disso, você não pode inserir uma nova linha dentro do intervalo doconjunto de chaves (keyset) correntemente bloqueado pela transação.Os bloqueios são mantidos pela duração da transação.

Os bloqueios exclusivos obstruem os bloqueios compartilhados e

exclusivos. Os bloqueios compartilhados obstruem os bloqueiosexclusivos. Os bloqueios compartilhados são mantidos pela duraçãoda transação.

Capítulo L2 I Monitorando o Microsoft SQL Server

SNAPSHOT

Processos obstruídos

Usa o recurso de controle de versão de linha para impedir quebloqueios compartilhados e exclusivos obstruam uns aos outros,enquanto mantém a consistência dos dados. Uma operação de leiturarecupera dados da versão da linha antes de iniciar uma operação demodificação de dados.

O Lock Manager é baseado em um algoritmo FIFO (first in, first out - o primeiro a enfraré o primeiro a sair). Cada processo que executa um comando precisa adquirir um blo-queio. Os bloqueios que estão sendo solicitados são enfileirados pelo Lock Manager naordem em que o pedido é feito. Desde que o recurso solicitado não tenha um bloqueioou tenha um bloqueio que não entre em conflito com o que está sendo solicitado, o

Lock Manager garanle o pedido de bloqueio. Se ocorrer um conflito de bloqueio, comoum pedido para adquirir um bloqueio compartilhado em uma linha que está bloqueadaexclusivamente por outro recurso, o pedido náo é atendido e o Lock Manager o mantémna flla de bloqueios, junto com todos os outros pedidos de bloqueio para esse recurso,até, que o bloqueio conflitante seja liberado.

Obstruçã.o é o termo usado quando ocorre uma situaçáo que produz bioqueios conflitan-tes no mesmo recurso. O segundo processo é impedido de adquirir o bloqueio atê q;tte oprimeiro recurso libere o bloqueio conflitanie. Um processo obstruído para de executaratê que os bloqueios necessários possam ser adquiridos.

Embora a obstrução seja uma ocorrência normal dentro de qualquer banco de dados quepermita manipulaçáo de dados por vários usuários, você terá um problema se a obstru-ção for séria ou durar um longo tempo.

Qualquer um que more em uma grande áteametropolitana tem experiência direta com aobstrução. Todo dia, no horário do rush, uma enchente de veÍculos tenta usar um únicorecurso - uma avenida. Desde que náo ocorram conflitos de condução, cada veículopassa rapidamente pela avenida e completa sua rota. Contudo, se ocorrer um acidenteque feche repentinamente cada pista da avenida, todo o trâfego pararâ e as pessoascomeçarão a ficar zangadas. O frâfego não pode começar a fluir novamente até, que osacidentados sejam retirados do caminho; nesse ponto, o fluxo do trâlego finalmenteretorna ao normai. O mesmo processo ocorre dentro de um banco de dados. Se ocorreruma obstrução por um longo tempo ou ocorrer uma obstruçáo contínua entre processos,o desempenho de um aplicativo será prejudicado.

39s

Page 397: Livro_SQL

396

Você pode determinar se um processo está obstruído usando a view sys.dm_exec_requests. Um processo obstruído mostrarâ um número diferente de zerc na colunablockíng _ses síon _íd .

Se você determinar que um processo está causando disputa dentro do banco de dados,um membro do roie de servidor fixo sysadmin poderá terminar o processo à força, exe-cutando o comando a seguir (onde SPID é a ID de processo do sistema da sessáo queestá causando a obstrução):

KILL <spìd>

Quando um processo é eliminado:

r Toda transação abefia é revertida.

I Uma mensagem é retornada para o cliente.

I Uma entrada é colocada no log de erro do SeL Server.

r Uma enfrada é colocada no log Application Event do Windows.

Deadlockso SOL Server mantém um fluxo ordenado de transações, mesmo através de operaçõesque causam obstruçáo. Um processo obstruído espera até que um bloqueio conflitanteseja liberado, antes que a execução sejaretomada. Contudo, é possível criar uma si-tuaçáo na qual as obstruções nunca podem ser solucionadas. Quando dois processosobstruem-se um ao outro de maneira tal que nenhum dos dois pode ser solucionado,está criado um deadlock.

Um deadlock exige pelo menos dois processos e cada processo deve estar executandouma ação que modifique dados. Como você pode ter vários bloqueios compartilhadosadquiridos em um único recurso ao mesmo tempo, não é possívelproduzir um deadlockcom um processo que só recupera dados.

um deadlock é um problema temporário que ocorre devido à seguinte sequência:

1. SPID1 adquire um bloqueio exclusivo em RowA.

2. SPID2 adquire um bloqueio exclusivo em RowC.

5. SPIDl tenta adquirir um bloqueio compartilhado em RowC e é obstruído peio blo-queio exclusivo.

4. SPID2 tenta adquirir um bloqueio compartilhado em RowA e também é obstruídopelo bloqueio exclusivo.

Como os dois processos precisam esperar pela liberação de um bloqueio exclusivo umdo outro, antes que possam termina¡ o Lock Manager tem uma situação impossível.Quando isso ocorre, o Lock Manager delecla o deadlock e escolhe um dos processos paraser eliminad o automaticamente.

Infelizmente, o processo escolhido como vítima do deadlock é o que tem menos tempoacumulado dentro do SQL Server. Portanto, você pode ter um processo fundamental que

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Page 398: Livro_SQL

seja escolhido como vífima do deadlock simplesmente porque náo mantém a conexãoabefia e executa várias consultas na sessáo. Você não pode mudar o algoritmo de sele-

çáo de vítima de deadlock.

Quando um deadlock ê detectado, a mensagem de erro 1205 é retornada pan o cliente e

o deadlock é registrado no log de erro do SQL Server. Além disso, você pode usar o Profi-ler pan caplurar um rastreamento de deadlock, o que permite inspecionar graficamentea causa do deadlock.

MELHoRES pnÁr¡cns Tratando de deadlocks

Capítulo 12 r Monitorando o Microsoft SQL Server

Os deadlocks são situaçöes temporárias causadas basicamente por sincronismo deficiente.Se as consultas que as duas sessöes estavam executando terminassem em menos tempo,o deadlock poderia ser evitado. Do mesmo modo, se um processo tivesse começado umpouquinho depois, o deadlock poderia nunca ter ocorrido. Como um deadlock é um esta-do de conflito que causa bloqueio temporário, seus aplicativos devem ser codificados deforma a detectar o erro l-205 e, então, executar outra vez a transação imediatamente, poisé muito grande a possibilidade de que o processo não cause deadlock na segunda vez queo comando for executado.

ffi¡ orcn DE EXAME\wl

Para o exame, você precisa conhecer os bloqueios que podem ser adquiridos e como a escala-da de bloqueio pode levar a problemas de obstrução ou deadlock. Se ocorrer uma obstruçãoou um deadlock, você também precisará saber como faz para resolver o problema.

f t"rt" rápido

397

1. Quais sáo os modos e tipos de bloqueio mais comuns que estáo disponíveis?

2. Como ocorre um deadlock?

Respostas

1. Os três modos de bloqueio mais comuns sáo: compartilhado, exclusivo e atu-alizaçâo. os três tipos de bloqueio sáo: linha, pâgina e tabela.

2. tJm deadlock exige pelo menos dois processos que estejam ambos modificandodados. Cada processo adquire um bloqueio exclusivo em um recurso e, então,tenta adquirir um bloqueio compartilhado no mesmo recurso bloqueado exclu-sivamente pelo processo.

PRÁTICA Solucionando um problema de deadlockNeste exercício, você vai configurar um rastreamento para capturar um grâfico dedeadlock.

1. No SOL Server Profiler, selecione File, New Trace e conecte-se em sua instância.

2. Especifique um nome, modelo e opções de rastreamenl.o para salvar em um arqui-vo, como mostrado na figura a seguir.

Page 399: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

e{Ê.¡l }R6;liFerdøii:i:

Trecenqmpì: , .

t::, llqqÞr.ovidtrr&Eiì ., .

,,: iJrFF..rysyÌ4Ë.lÏpÞr

Û5Èúàiêiiiâ"id.

F we t File¡

:lfg.J.E!2.,r:'t.,:,,t::::',.r:.:r¡.:1.:"::;:;:r:.jr..::.i!.r::jrì,:ìi:ri:i.;t.,::::,.:l.,

lr.,l4,l-,:.1:-ï,io!L.l$ui.r,.,o-l

:; ::ii: l.iir:¡ "+r:ì :: :,.: ii:: :j,i+ ::,it::

ftrtri*hhflh*è.(Mt¡.] .. : I :,¡.,t-*.¡".¡*,¡ Ì::3,i:,È.3Ì:t'it,E¡

3.

4.

Clique na guia Events Selection.

Marque a caixa de seleção do evento Deadlock graph dentro da categoria Locks,como mostrado aqui.

¡I2l 3l¿ù08 . -:l I l:se:olA{vt '=riirr{.a,:!if.-.:iji,ni:r::a.j::r::;.:..,¡i'-:;iji.;liÌ :;!5:jr!ìi-!:rì;r$t;1i:;,:¡-1,r',:: Ì:

*.;i'-#::,,t

EprÈr5dedìou1r".;rÈ*È;n; +iÀ;¿ I l

a::a

P Deadlockgraph

¡':!l'l :.¡

:,:ìT!:ì;;

, : ia¡iit'r+::(::::= í

5.

6.

Clique em Run.

Abra duas janelas de consulta e mude o contexto para o banco de dados Adventu-reworks.

Riî' : l:" :iái¡el!ij!" 'ür"'' " l'l

Page 400: Livro_SQL

7. Na janela de consulta 1, execute o código a seguir:

SET TRANSACTION ISOLATION LEVEL SERIAL]ZABLE

GO

BEGIN TRANSACTION

UPDATE Production. ProductSET ReorderPoint = 600I¡'JHERE Product]D = 31-6

8. Na janela de consulta 2, execute o código a seguir:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLEcoBECTN TRANSACTION

UPDATE Producti on. ProductlnventorySET QuantjtY = 532hIHERE ProductlD = 316AND LocationlD = 5

SELECT Name, ReorderPointFROM Production. ProductWHERE ProductlD = 316

Capítulo 12 I Monitorando o Microsoft SQL Server

9. Volte para ajanela de consulta 1 e execute o código a seguir, certificando-se de náo

executar uma transaçáo de efetivação:

SELECT ProductID, LocatìonID, Shelf, Bin, Quantity, ModifiedDateFROM Producti on. ProductlnventoryIdHERE ProductlD = 316AND LocationlD = 5

10. Observe os resultados no Profiler, mostrados aqui.

399

Page 401: Livro_SQL

Resumo da lição

Kit de Treinamento MCTS (Exame70-432} Microsoft SeL Server 2008

r O Lock Manager é responsável por gerenciar os bloqueios que o SQL Server utilizapara manter consistência de dados, enquanto permite que vários usuários manipu-lem dados concomitantemente.

r Quando um bloqueio exclusivo é adquirido, nenhum outro processo pode adquirirum bloqueio compartilhado paru leitura ou um bloqueio exclusivo para modificaçãoalé qúe o bloqueio exclusivo seja liberado. Se o processo estiver sendo executadono nível de isolamento READ UNCOMMITTED, as operações de leitura ignorarão osbloqueios exclusivos.

r Você pode usar o comando KILL para terminar um processo.

r Um deadlock é um estado temporário no qual dois processos adquirem bloqueiosconflitantes de tal maneira que nenhum dos dois pode terminar. O Lock Managergera o erco 1.205 e seleciona um dos processos como vítima do deadlock.

Revisão da liçãoResponda a pergunta a seguir para ÍesÍ.ar seu conhecimento sobre aLição 6. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. Quais das opções a seguir são usadas paralocalizar processos obstruídos? (Escolhatodas as respostas que se aplicam.)

A. View sys.dm _exec _s es síons

B. View sJ/s.dm_exec requests

C. View sys.dm _os _waittng _tasþs

D. Procedimento atmazenado (stored procedure) de sistema sp_who2

Page 402: Livro_SQL

Revisão do capítuloParareforçat o que aprendeu neste capítulo, você pode:

r Ler o resumo do capítulo.

r Examinar a lista de termos-chave íntroduzidos neste capítulo.

I Completar o cenário de caso. Esse cenário aborda situações reais que envolvem ostópicos deste capítulo e solicita que você crie uma solução.

r Completar as práticas sugeridas.

J Fazer um teste.

Resumo do capítulor O SQL Server Profiler fornece uma interface pafa a API do SQL Trace, que expõe os

eventos que ocorrem dentro do mecanismo de banco de dados para que você possacapturar informações sobre o estado operacional atual de uma instância.

I O System Monitor permite capturar contadores de desempenho que podem ser cor-relacionados à saída do SQL Trace dentro do Profiler, que fornecem o contexto doestado do hardware para eventos que foram capturados.

r As falhas podem ocorrer em muitos níveis: hardware, contas de serviço e configu-ração. As causas mais comuns para um serviço náo ser capaz de iniciar estão rela-cionadas às permissões. A causa mais comum de falhas de bancos de dados ativosé ficar sem espaço em disco.

r Deadlocks são problemas temporários causados por obstruções conflitantes que de-vem ser capturadas por um aplicativo, o qual, então, envia novamente o comandopara ser executado.

Termos-chave

Você sabe o que estes termos-chave signifrcam? Confira suas respostas consultando oglossário no final do livro.

r Log de contador

r Deadlock

r NÍvel de isolamento

r Escalada de bloqueio

r SOL Trace

I Trace Event

Cenário de caso

No cenário de caso a seguir, você vai aplicar o que aprendeu neste capítulo. As respostasdessas questões podem ser encontradas na seção "Respostas", no final deste livro.

Capítulo 12 r Monitorando o Microsoft SQL Server 40t

Page 403: Livro_SQL

402 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Cenário de caso: Projetando uma estratég¡ade automação para a Coho Vineyard

Histórico

Visão gerol da empresa

A Coho Vineyard foi fundada em 1947 como uma vinícola regional dirigida por umafamília. Graças aos vinhos premiados que tem produzido nas últimas décadas, a CohoVineyard teve crescimento significativo. Para continuar expandindo, várias vinícolasforam adquiridas com o passar dos anos. Atualmente, a empresa possui 16 vinícolas;9 estáo em Washington, Oregon e Califónia, e as 7 restantes estáo localizadas em Wis-consin e lv$higan, todas nos EUA. As vinícolas empregam 532 pessoas, 762 das quaistrabalham no:escritório central, que abriga servidores fundamentais para o negócio. Aempresa æm ìZZ vendedores que viajam pelo mundo e precisam aceisat a disponibili-dade de estoque atualizada.

Mudanças planejodos

Alé agoru, cada uma das 16 vinícolas pertencentes à Coho Vineyard tem um site sepa-rado em suas instalações. A Coho Vineyard quer consolidar a presença na Web dessasvinícolas para que os visitantes dos sites possam comprar produtos de todas as 16vinícolas apartir de uma únicaloja online. Todos os dados associados a esse site serãoarmazenados em bancos de dados no escritório central.

Para saúsfazer as necessidades dos vendedores atê. q)e o projeto de consolidação estejaconcluído, dados de estoque decadavinícola sáo enviados parao escritório central ao fi-nal de cada dia. A replicaçáo por merge (mesclagem) foi implementadaparapermitir queos vendedores mantenham cópias locais de dados do cliente, do estoque e de pedidos.

Ambiente de dados existente

Bancos de dados

Atualmente, cadavinícola mantém seu próprio banco de dados para atmazeîar todas asinformações empresariais. Ao frnal de cada mês, essas informações sáo trazidas para oescritório central e transferidas para os bancos de dados mostrados naTabeTa 1.2-5.

Tabela 12-5 Bancos de dados da Coho Vineyard

Customer

Accounting

HR

lnventory

Promotions

Depois que o projeto de consolidação do banco de dados estiver concluído, um novobanco de dados, chamado Order, sewirâ como data warehouse para a nova loja da Web.

180 megabytes (MB)

5OO MB

1OO MB

250 MB

80 MB

Page 404: Livro_SQL

Como parte de seu trabalho diârio, os funcionários também se conectarão periodicamen-te no banco de dados Order usando um novo aplicativo Web interno.

O banco de dados HR contém dados sigilosos e é protegido com TDE (TransparentData Encryption). Além disso, os dados da tabela Salary sáo criptografados usandoum certificado.

Servidores de banco de dados

Um único servidor, chamado DB 1 , contém todos os bancos de dados no escritório central.DB1 está executando SQL Server 2008 Enterprise no Windows Server 2003 Enterprise.

O superintendente de tecnologia (CTO) está considerando a compra de uma nova má-quina para substituir o DB1, pois os usuários estão reclamando esporadicamente deproblemas de desempenho. Além disso, várias vinícolas têm relatado erros de ativaçã,ode dispositivo e afé algumas telas azuis no servidor que executa as instâncias locais doSQL Server.

Requisitos empresariaisVocê precisa ptojetar uma soluçáo de arquivamento para os bancos de dados Customere Order. Sua estratégia de arquivamento deve permitir que os dados de Customer sejamguardados por seis anos.

Para preparar o banco de dados Order para os procedimentos de arquivamento, você criauma tabela particionada chamada Order.Sales. Order.Sales inclui duas partiçóes. A par-tição 1 inclui atividade de vendas do mês corrente. A partição 2 éusadapana armazenaratividade de vendas do mês anterior. Os pedidos feitos antes do mês anterior devem sermovidos para oútra tabela particionada, chamada Order.Archive. A partiçáo 1 de Order.Archive inclui todos os dados arquivados. A partição 2 permanecevazia.

Um processo precisa ser criado para carcegar os dados de estoque de cada uma das 16vinícolas, diariamente, às 4h00min.

Quatro grandes clientes enviam pedidos usando o esquema XML (Extensible MarkupLanguage) da Coho Vineyard para transações EDI (Electronic Data Interchange). Os ar-quivos EDI chegam às 17h00min e precisam ser analisados e carregados nos bancos dedados Customer, Accountíng e Inventory, cada um dos quais contém tabelas relevantesparc fazer um pedido. Atualmente, a rotina de importaçáo EDI é um aplicativo em C+ +de um thread que leva entre três e seis horas para processar os arquivos. Você precisaconcluir o processo EDI às 1,7h30min para satisfazer o acordo de atendimento SLA (Ser-vice Level Agreement) fechado com os clientes. Depois que o projeto de consolidaçáotiver terminado, a rotina EDI carregará todos os dados no novo banco de dadosOrder.

Há relatos de disputa generalizada no SQL Server central, enquanto dados estáo sendoimportados durante o processo de consolidação noturno. Você precisa reduzir ou elimi-nar a disputa.

Você precisa îazer o backup de todos os bancos de dados, em todos os locais. No ce-nário de pior caso, você pode perder no máximo cinco minutos de dados. Os bancosde dados Customer, Account, Inventory, Promottons e Order podem fr,car lora do ar nomáximo por 20 minutos, no caso de um desastre. Os dados com mais de seis meses nos

Capítulo L2 r Monitorando o Microsoft SQL Server

Page 405: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

bancos de dados Customer e Order podem ficar fora do ar por até,12 horas no caso de

um desastre.

Responda as perguntas a seguir:

1. Como você determina a causa dos problemas de desempenho?

2. Comovocê pode rcduzit ou eliminar os problemas de obstrução durante a execução

da consolidação noturna?

3. Como você soluciona os erros que estão ocorrendo nas vinícolas?

Práticas suger¡daspara dominar os objetivos do exame apresentados neste capítulo, complete as tarefas

a seguir.

Criando um rastreamento com o SQI Server Profiler paradiagnosticar prob¡emas de desempenho e deadlock

r Exercício1 Crieumrastreamentopara capfurargrâficos dedeadlockeconfigure-o para iniciar automaticamente quando o SQL Server iniciar.

I Exercício 2 Crie um rastreamento para capû)îar estatísticas de desempenho de

consulta que possam ser usadas paraptoduzir um parâmetro de comparaçâo para

sua instância.

Criando um log de contador com o System Monitor paradiagnosticar problemas de desempenho, deadlock e sistema

r Exercício 1 Crie um log de contador que capture contadores de hardware e SQL

Server que possam ser usados paraproduzir um parâmetro de desempenho para a

máquina.

I Exercíco 2 Crie um 1og de contador para capturar eventos que permitam diagnos-

ticar erros de espaço em disco e hardware.

Faça um testeOs testes do CD deste livro (em inglês) oferecem muitas opções. Você pode fazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-ficação 70-432. É possível configurar o teste para que ele simule a experiência de îazer

um exame de certificaçáo ou configurâ-lo no modo de estudo (study mode) para ver as

respostas corretas e explicações depois de cada questão.

MA|S TNFORMAçÕES Testes

Para mais detalhes sobre todas as opções de testes disponíveis, consulte a seção "Como utilizar

os testes" na lntrodução deste livro.

Page 406: Livro_SQL

Capítulo L3

Ot¡mizand

Livros inteiros, centenas de notícias pela Web, milhares de sessões de conferência, cen-tenas de seminários, dezenas de aulas de treinamento e dezenas de milhares de páginasespalhadas por centenas de sites têm se dedicado a ajudâ-lo a ofimizar o desempenhodo Microsoft SQL Server. Praticamente todos esses recursos presumem que você já saibaonde estão os problemas de desempenho e fornecem receitas para conigir os problemas1â ídentificados. Qualquer um que tenha recebido a incumbência de otimizar o desem-penho do SQL Server sabe que o maior desafio é primeiramente encontrar o problemade desempenho. O Capítulo 1.2 jâ abordou duas ferramentas - o SQL Server profiler eo System Monitor, que sáo valiosas na otimização do desempenho. Neste capítulo vocêvai aprender sobre o restante das ferramentas disponíveis no SQL Server 2008 que per-mitem localizar gargalos de desempenho.

Objetivos de exame neste capítulo:

f Implementar o Resource Governor.

I Usar o Database Engine Tuning Advisor.

r Coletar dados de desempenho com DMVs (Dynamic Management Views - views degerenciamento dinâmicos).

I Usar o Performance Studio.

Lições deste capítulo:

r Lição 1: Usando o Database Engine Tuning Advisor 4OT

I Lição 2:Trabalhando com o Resource Governor 414

r Lição 3: Usando views e funções de gerenciamento dinâmicas 425

f Lição 4:Trabalhando com o PerformanceDaï.a Warehouse 438

Antes de começarParaîazet as lições deste capítulo, você deve ter:

r o SQL Server 2008 instalado

r o banco de dadosAdventureWorþs instalado denfro da instância

Page 407: Livro_SQL

406 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

@ rurunao real

Míchael Hotek

:

Frequentemente, ouço a afftmaçáo de que a olimizaçãLo do desempenho é uma"arle". Quem diz isso normalmente está tentando convencêlo de que a otimizaçáodo desempenho é uma "aÍte" a fim de vender software ou serviços de consultoriapara resolver seus problemas. Afinal, somos ensinados que, paÍa ser um "artista",são necessários talentos especiais que apenas algumas pessoas têm. Pegar um pe-

daço de pano, tinta e um pincel e pintar um quadro - isso é aríe. Pegar um mar[elo

e um cinzel para esculpir uma rocha e produzir uma estâtua é arte. A otimizaçâo do

desempenho tem mais ou menos o mesmo em comum com arte quanto um pedaço

de fruta tem em comum com um carro.

O SQL Server é um grupo de instruções executadas por um computador. O códi-go dentro do SQL Server define a saídaproduzída pelo computador com base na

entrada recebida. Devido ao simples fato de que todo sistema de computador é

baseado na matemâtica binâria, uma entrada produz exatamente uma saída. Amesma entrada sempre produz exatamente a mesma saída. o código também limi-ta o intervalo de entradas válidas possíveis. Desde que seus pedidos estejam dentro

dos limites definidos do programa de computador, você receberâ uma resposta. Alarcla de otimizaçâo do desempenho é simplesmente uma questão de conhecimen-

to. Suanto melhor você entender as regras e estruturas dentro do código de compu-

tador que compõem o SQL Server, melhor podeú construir pedidos de modo que o

menor número possível de recursos seja usado.

A otimizaçã.o do desempenho tem um único princípio real, cujas rcízes es|.ão na

matemâtica: o caminho mais curto entre dois pontos éuma linha reta.

Se seu código lê mais dados do que o necessário, seu aplicativo é executado maislentamente do que se lesse somente os dados necessários. Se seu código faz duaspassagens pelos dados antes de retornar um resultado, ele é executado mais lenta-mente do que um código que faça apenas uma.

Seu desafio na otimizaçáo do desempenho é primeiro encontrar o código a ser exe-

cutado pelo SQL Server que não siga uma linha reta, nâo faça uma única passagem

pelos dados ou manipule mais dados do que o necessário. Depois de encontrá-lo,você aplica então seu conhecimento sobre o funcionamento do SQL Server pararc-escrever o pedido de modo que ele siga uma linha reta, manipule o mínimo volumede dados possível e precise de apenas uma passagem pelos dados para fazer isso.

Page 408: Livro_SQL

Lição 1: Usando o Database Engine Tuning AdvisorO Database Engine Tuning Advisor (DTA) é projetado paru avaliar suas consultas emrelação às regras do Query Optimizer, pan fazer sugestões que possam melhorar o de-sempenho. Nesta lição, você vai aprender a construir um arquivo de carga de trabalhoe então usar o DTA para analisar a carga de trabalho da consulta para determinar comopoderia melhorar o desempenho.

Após esta lição, você será capaz de:

I Configurar o DTA para analisar uma carga de trabalho

I Salvar recomendaçöes do DTA

Tempo estimado para a lição:20 minutos

Capítulo 13 r Otimizando o Desempenho

Database Engine Tuning AdvisorO DTA trabalha em conjunto com a saída do SQL Trace. Primeiramente, é capturado umrastreamento contendo as consultas que você deseja analisar com o DTA. A saída dorastreamento é lida e avaliada pelo DTA em relação a um banco de dados. As recomen-dações que o DTA pode fazer são:

r Adicionar índices

r Eliminar Índices

r Particionar tabelas

a Atmazenar alinhamento de tabelas

A origem de uma carga de trabalho do DTA pode ser um arquivo de rastreamento, scriptTransact-SQl (T-SQL) ou uma tabela contendo comandos T-SQL. Embora o Profiler sejacapaz de captvraÍ uma ampla variedade de eventos, os únicos eventos com que o DTAse preocupa sáo:

t RPC:Starttng

t RPC:Completed

t SQL:Batch Starttng

I SQL:Batch Completed

Uma análise é rcalizada em quatro etapas:

1 . Gerar uma caÍga de trabalho para análise.

2. Iniciar o DTA e conectar um servidor com SQL Server que contenha um banco de

dados para analisar acarga de trabalho.

3. Selecionar a caÍga de trabalho a ser usada.

4. Especificar opções de otimizaçâo.

Page 409: Livro_SQL

408 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Vamos ver as etapas e opções de análise do DTA que você pode especificar. Inicie o DTApara que você possa configurar uma sessão de análise, como mostrado na Figura 13-1.

A análise no DTA é realizada em uma sessão. Cada sessão deve ter um nome e ser sal-va, para que você possa examinar os resultados posteriormente. Você deve dar a cadasessáo um nome exclusivo que o ajude alembrar o motivo de ter feito a análise, assimcomo quand o foi realizada.

Após especificar o nome da sessão, você precisa selecionar as opções de carga de lra-balho. A maneira mais comum de fazer uma análise é com um arquivo que contenha asaída de um rastreamento ou contenha um ou mais comandos T-SOL.

MELHoRES PRÁTlcAs Automatizando a análise

O DTA é o utilitário gráfico com que você interage. Você também pode interagir com o dta.exede linha de comando. Você pode configurar um rastreamento usando código, o qual pode serexecutado a partir de um trabalho do SQL Server Agent. O trabalho pode importar um arqui-vo de rastreamento para uma tabela quando o rastreamento estiver concluído. Como o DTApode usar uma tabela como origem da carga de trabalho, você pode configurar uma etapa detrabalho para iniciar uma execução de análise do DTA nos dados de rastreamento que acaboude importar. Em vez de perder tempo clicando em GUls, você pode deixar a análíse para ocomputador.

Figura 13-1 Criando uma sessão de análise no DTA.

Page 410: Livro_SQL

Na seção Workload, você seleciona o banco de dados a ser usado para a análise de cargade trabalho. O banco de dados selecionado paraanâlisedecarga de trabalho é usadocomo base para as recomendaçóes de otimização.

A seçáo inferior permite selecionar os bancos de dados e tabelas que você deseja oti-mizar. As consuitas contendo objetos que náo estão selecionados para otimização sâoignoradas pelo DTA durante a análise.

Depois de ter especificado todas as opções gerais, clique na guia Tuning Options, comomostrado na Figura 13-2.

Existem quatro grupos de opções de oÍimização:

r Limitações de tempo e ações online

I Estruturas existentes no banco de dados

r Opções de particionamento

r Se as estruturas existentes seráo mantidas no banco de dados

Se você limita o tempo de otimizaçáo, o DTA analisa o máximo das consultas possível nacarga de trabalho dentro do intervalo de tempo exigido. As consultas que ainda permane-cerem na carga de trabalho quando o tempo de otimizaçáo expirar não serão analisadas.Você também pode usar acaixa de diálogo Advanced Tuning Options paralimitar o espaçoconsumido pelas recomendações, assim como para especificar se as alterações recomenda-das precisam ser implemenladas online ou offline, como mostrado na Figura 13-3.

Capítulo L3 r Otimizando o Desempenho 409

Figura 13-2 Especificando opções de otimização.

Page 411: Livro_SQL

410 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Figura 13-3 Opções de otimização avançadas.

O DTA fazrecomendações de índice e view indexada com base nas configurações da se-

çáo Physical Design Structures (PDS) To Use In Database. A configuraçáo mais comumé recomendar somente índices, o que inclui tanto índices clusterizados (clustered) comonáo clusterizados (nonclustered). A opçáo Evaluate Utilization Of Existing PDS onlypode ser usada para localizar índices e views indexadas que podem ser removidos por-que náo estáo sendo usados.

Se você especificar uma estratégia de particionamento, todas as recomendações seráo

sugeridas usando estrafégia de particionamento completo ou de partiçáo alinhada. Asopções da seção Physical Design Structures (PDS) To Keep In Database permitem definirse as recomendações precisam considerar as estruturas de índice e particionamentoexistentes no banco de dados ou se as estruturas existentes podem ser removidas comoparte das recomendações.

CUIDADO Impacto no desempenho do DTA

O DTA analisa o custo de uma consulta especificada em relação a cada recomendação pos-sível. O custo da consulta é gerado pelo otimizador de consulta com base em estatísticas dedistribuição. Para receber um custo de consulta preciso, o DTA gera estatísticas no banco dedados que está sendo usado para análise de carga de trabalho antes de enviar um pedido para

o otimizador. A criação e destruição de estatísticas por parte do DTA pode impor uma cargamuito pesada no banco de dados que está sendo analisado. Portanto, você deve ter muito cui-dado, caso esteja executando o DTA em um banco de dados de produção, e em quase todosos casos, em vez disso, desejará usar o DTA em um sistema de teste.

Após ter especificado as opções de otimizaçã,o desejadas, você pode iniciar a anâliseclicando em StartAnalysis nabarua de ferramentas. Ao concluir a execução de umaanálise, o DTA apresenta recomendações completas, com o comando (ou comandos)necessário para implementar cada recomendação, como mostrado naFigara 13-4.

Page 412: Livro_SQL

Capítulo 1-3 r Otim¡zando o Desempenho 4Ll

Figura 13-4 Recomendaçöes de otimização.

Você também pode examinar uma variedade de relatórios relacionados às consultasotimizadas que podem informar:

r A melhoria percentual estimada

r A frequência de cada consulta dentro da carga de trabalho

r As estatísticas de custo de consulta

r Um relatório detalhado dos índices atuais no banco de dados analisado

@ o,.o DE E*AME

Você precisa saber como cada uma das opções de otimização afeta as recomendaçöes feitaspelo DTA.

t'teste rápidoI Quais são as origens de entrada válidas para o DTA analisar?

Resposta

I O DTA pode analisar consultas e procedimentos armazenados (stored procedures)que estejam armazenados em um arquivo ou em uma tabela. A origem de otimiza-ção comum para o DTA é um arquivo de saída de rastreamento.

Page 413: Livro_SQL

4L2

PRÁTlcA Analisando a carga de trabalho de uma consultaNeste exercício, você vai construir um arquivo de carga de trabalho que pode ser usadopelo DTA para îazer recomendações para melhorar o desempenho.

1. Se ainda não existir, crie um novo banco de dados chamado AdventureWorþ,sTest.

2. Execute o comando a seguir paragerar uma tabela de teste:

USE Adventu rel¡/orksTestcoCREATE SCHEMA Person AUTH0RIZATI0N dboGO

SELECT * INTO Adventurel¡r/orksTest.Person.AddressFR0M Adventu relr/o rks . Pe rson . Add ress

3. Salve o código a seguir em um arquivo:

USE Adventu rel¡lorksTestGO

SELECT Addresslinel, Addressline2, Cìty, PostalCodeFR0M Person.AddressltlHERE Ci ty = 'Dal I as'GO

SELECT Addresslinel, Addressline2, City, PostalCodeFROM Person.AddresshIHERE Cìty LIKE'S%'c0SELECT AddressLinel, AddressL'ine2, Cìty, PostalCodeFROM Person.AddressI^IHERE PostalCode = '75201-'GO

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

4. lnicie o DTA e conecte-se na instância que contém o banco de dados Adventu-reworksTest.

Dê um nome à sua sessão de otimizaçáo.

Selecione o arquivo que você criou no passo 3 e especifique o banco de dadosAd-venturel4/orksTest para a análise de carga de trabalho.

Selecione o banco de dados AdventureWorksTest e a tabela Person.Address paraotimizar.

Clique na guia Tuning Options.

Na seção Physical Design Structures (PDS) To Use In Database, selecione a opçáoIndexes, se necessário.

5.

6-

7.

8.

9.

10.

11.

Na seçáo Partitioning Strates/ To Employ, selecione a

Na seção Physical Design Structures (PDS) To Keep InKeep All Existing PDS, se necessário.

Inicie a análise.72.

13. Examine as recomendações, junto com cada um dos relatórios de análise disponíveis.

opção No Partitioning.

Database, selecione a opção

Page 414: Livro_SQL

Resumo da lição

I O DTA é usado para analisar uma carga de trabalho de consulta em um banco dedados para fazer recomendações sobre estruturas a serem criadas ou eliminadas, oque poderia melhorar o desempenho.

I Você pode usar um arquivo ou uma tabela como origem de catga de trabalho.

r O DTA cria estatísticas no banco de dados analisado e então envia um pedido para o

Query Optimizer pan avaliar o custo da consulta e determinar se houve melhoria.

Revisão da lição

Responda a pergunta a seguir parateslar seu conhecimento sobre aLiçã.o 1. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

Capítulo 1.3 r Otimizando o Desempenho

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. Quais tipos de caÍgas de trabalho o DTA pode usar para anâlise? (Escolha todas asrespostas que se aplicam.)

A. Um script T-SQL

B. Um arquivo de rastreamento contendo planos de exibiçáo XML (ExtensibleMarkup Language)

C. Um arquivo de rastreamento contendo eventos RPC:Completed

D. Um arquivo de rastreamento contendo eventos SP:Stmtcompleted

413

Page 415: Livro_SQL

Lição 2:Trabalhando com o Resource Governor

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

O Resource Governor permite limitar a CPU e a memória alocadas ou utilizadas poruma conexáo ou por um grupo de usuários específico. Nesta liçáo você vai aprender a

configurar o Resource Governor para maximízar a alocação de recursos com base nasprioridades da carga de trabalho empresarial.

Após esta lição, você será capaz de:

I Criar um pool de recursos

I Criar um grupo de carga de trabalho

I Criar uma função classificadora

I Avaliar a utilização de recursos de um pool de recursos

I Avaliar a utilização de recursos de um grupo de carga de trabalho

Tempo estimado para a lição:20 minutos

Resource GovernorO Resource Governor trabalha com três componentes:

I Pools de recursos

I Grupos decarga de trabalho

r Funções de classificação

Quando o Resource Governor é ativado, o processamento dentro do SQL Server obedece

ao processo mostrado na Figura 13-5.

NOTA Classificação de conexão

A classificação ocorre no momento em que uma conexão é criada. Portanto, a única maneirade poder limitar recursos é com base nas propriedades da conexão. Você não pode limitar oconsumo de recursos de consultas individuais ou mesmo de tipos de consultas.

Os recursos que podem ser gerenciados pelo Resource Governor sáo CPU e memória.Embora seja possível limitar os recursos que se tornam disponíveis para um grupo de

carga de trabalho, qualquer pedido que esteja em execução náo é limitado e você nãopode limitar as operações internas do SQL Server.

lJmgrupo de carga de trabalho (worload group) é apenas um nome associado à sessáo de

usuário. Um grupo de carga de trabalho não define uma carga de trabalho de consulta,mas sim um login que esteja executando as consultas. Os grupos de carga de trabalho sáo

apenas rótulos que você associa a uma conexão, quando ela é. criada, para que o ResourceGovernor possa atribuir a conexão ao pool de recursos (resource poo,f apropriado.

lJma;função class!ficadora (classjfreffinctíon) é uma funçáo que você cria no banco de

dados master. Apenas uma função classificadora por vez pode estar ativa para o Re-

source Governor. A função não pode ter quaisquer parâmetros de entrada e é obigada a

Page 416: Livro_SQL

&Grupo de carga de trabalho

I

l^r;;.>( ,".urro, t,-

Capítulo L3 I Ot¡m¡zando o Desempenho

Figura 13-5 Especificando opçöes de otimização.

relorîar um valor escalar. O valor retornado é o nome do grupo de carga de trabalho emque a sessáo deve ser classificada. A funçáo pode conter qualquer código que seja válidopara uma função, mas você deve minimizar o volume de código em qualquer funçáo de

classificação. Como a funçáo classificadora é executada após a aufenticaçáo, mas antesque seja retornado um identificador de conexão para o aplicativo do usuário, quaisquerproblemas de desempenho em sua função de classificação afef.am os tempos de conexáocom o servidor que estâ execulando o SQL Server e podem levar a problemas de tempode conexáo esgotado em um aplicativo.

Grupo de carga de trabalho Grupo de carga de trabalho

415

NOTA Pools de recursos padrão

Se uma função classificadora não está associada ao Resource Governor ou não existe, retornaNULL ou retorna um grupo de carga de trabalho inexistente, a sessão do usuário é associadaao pool de recursos padrão (default).

Uma conexão só pode pertencer a um único grupo de carga de trabalho, mas váriasconexões podem ser classificadas no mesmo grupo de carga de trabalho. Cada grupode carga de trabalho recebe um único pool de recursos, mas vários grupos de carga detrabalho podem receber o mesmo pool de recursos.

Um pool de recursos define a quanlidade de alocaçáo mínima e máxima de CPU, me-mória ou ambos. O valor mínimo indica a menor quantidade garantida de um recursoque está disponível para o pool de recursos. Cada pool de recursos pode ser configu-rado com um valor mínimo, mas o total dos valores mínimos entre todos os gruposde recursos náo pode passar de 100. O valor máximo impõe um limite superior para aquantidade de um recurso que pode ser alocada para um grupo de carga de trabalhoassociado a um pool de recursos.

Page 417: Livro_SQL

4L6 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

NOTA Alocação de recursos

Todas as conexöes que estão em execução dentro de um pool de recursos são tratadas compeso igual e o SQL Server equilibra os recursos disponíveis para o pool de recursos entre todosos pedidos que estão em execução dentro do pool.

Embora uma função de classificação possa ser criada a qualquer momento, você devecriâ-la como último passo na implementação do Resource Governor. Quando associadaao Resource Governor, a funçáo de classiflcação é executadapata cada nova conexãocom sua instância.

Você implementa o Resource Governor usando os passos a seguir:

1. Ativar o Resource Governor.

2. Criar um ou mais pools de recursos.

3. Uiar um ou mais grupos de carga de trabalho.

4. Associar cada grupo de carga de trabalho a um pool de recursos.

5. Criar e testar uma função classificadora.

6. Associar a funçáo classificadora ao Resource Governor.

& DICA DE EXAME

Você precisa saber os recursos que o Resource Governor pode controlar, assim como o modode testar e solucionar problemas de uma função de classificação.

Você pode usar as seguintes views para retornar informações sobre a configuraçáo doResource Governor:

SELECT * FROM sys. resource_governor_resource-poo1sSELECT * FROM sys. resource_governor_workload_groupsSELECT * FROM sys. resource_governor_configuratìonGO

Quando o Resource Governor está ativo, a coluna group_id de sys.dm_exec_sessions é

a ID do grupo de cargade trabalho ao qual a sessão estâatríbuída.

{fteste rápido

1. Quais sáo os objetos usados parauma implementação de Resource Governor?

2. Quais recursos o Resource Governor pode controlar?

Respostas

1. o Resource Governor depende de uma funçáo classificadora definida pelousuário no banco de dados master para atribvir uma conexáo a um grupo de

carga de trabalho. Cada grupo de carga de trabalho é atribuido a um pool de

recursos que gerencia recursos de CPU e memória.

2. O Resource Governor pode ser usado para gerenciar recursos de CPU e memória.

Page 418: Livro_SQL

PRÁTlcA lmplementando o Resource GovernorNos exercícios a seguir, você vai implementar o Resource Governor e testar o efeito emsessões de usuário.

Neste exercício, você vai criar dois pools de recursos que serão usados para garantirdisponibilidade de CPU para grupos de usuários.

1. No SSMS, conecte-se com sua instância no Object Explorer.

2. ExpandaManagement, Resource Governor, clique com o botão direito do mouse emResource Pools e selecione New Resource Pool.

5. Marque a caixa de seleção Enable Resource Governor.

4. Crie um pool chamado Executives e configure o mínimo de CPU como 2Oo/o.

5. Crie um pool chamado Customers e configure o mínimo de CPU como 5Oo/o.

6. Crie um pool chamado AdHocReports e configure o mínimo de CPU como Oo/o.

Capítulo L3 r Otimizando o Desempenho 4L7

7. Clique em OK.

Neste exercício, você vai criar grupos de carga de trabalho que serão usados para dividirpedidos de usuário pelos pools de recursos apropriados.

1. Expanda o nó AdHocReports no Object Explorer, clique com o botão direito do mou-se em Workload Groups e selecione New Workload Group.

Page 419: Livro_SQL

4t8 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

2. Crie um grupo AdHocReportcroup paÍa o pool de recursos AdHocReports, comomostrado aqui.

5. Crie um grupo CustomerGroup para o

4. Crieum grupo ExecutiveGroup para o

5. Clique em OK.

Neste exercício, você vai criar uma função classificadora e testar a classificação de cargade trabalho e a atribuiçâo a um pool de recursos.

1. Execute o código a seguir no banco de dados master:

CREATE FUNCTION dbo. fn_ResourceGovernorClassi fi eroRETURNS sysnamel¡ìlIïH SCHEMABINDING

AS

BEC]N

DECLARE @group sysname--0 nome de grupo de carga de trabalho diferencia letras maiúsculas

e minúscu1as,independente da configuração do servidor

IF SUSER-SNAMEO = 'Executjve'SET @grouP = 'ExecutiveGrouP'

ELSE IF SUSER_SNAMEO = 'Customer'SET @grouP = 'CustomerGrouP'

ELSE IF SUSER_SNAMEO : 'AdHocReport'SET @grouP = 'AdHocReportÇroup'

pool de recursos Customers.

pool de recursos Executives.

Page 420: Livro_SQL

ELSE

SET @grouP = 'default'RETURN @group

END

c0

2. Execute o código a seguir para associar afttnção classificadora ao Resource Gover-nor:

ALTER RESOURCE COVERNOR Ì¡IITH (CLASSIFIER-FUNCTION = dbo.fn-Resou rceGovernorCl assi fi er)

c0

ã. Execute o código a seguir paralornar a funçáo classificadora aÍival

ALTER RESOURCE COVERNOR RECONFÏGURE

GO

Capítulo 13 r Otimizando o Desempenho

Neste exercício, você vai construir um script de teste simples para ser executado e moni-forar o funcionamento dos pools de recursos usando o System Monitor.

1. Abra uma nova janela de consulta, faça login como administrador e execute o códi-go a seguir paracriar três logins para teste:

CREATE LOGIN Executive hIITH PASSì^/ORD = '<InsiraSenhaForteAqui>'GO

CREATE LoGIN Customer Vr/ITH PASShIoRD = '<InsiraSenhaForteAqui>'c0CREATE LoGIN AdHocReport WITH PASSWoRD = '<fnsíraSenhaForteAqui>'GO

2. Abra uma nova janela de consulta e conecte-se usando o login Customer.

3. Abra uma nova janela de consulta e conecte-se usando o login Executive.

4. Abra uma nova janela de consulta e conecte-se usando o login AdHocReport.

5. Execute a consulta a seguir dentro da janela de consulta onde você se conectoucomo administrador para verificar o grupo de carga de trabalho atribuído a cadaconexão:

SELECT b.name Work-loadGroup, a.logìn-name, a.session-idFROM sys,dm-exec_sessions a INNER JOIN sys.dm-resource-governor-workload_groups b

ON a.group-id = b.group-idI^IHERE b.name != 'internal'

6. Digite a consulta a seguir em cada uma das janelas de consulta:

SET NOCOUNT ON

DECLARE @var INT

SET @var = 1

ì¡/HTLE @var < 10000000

419

Page 421: Livro_SQL

420 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

BECIN

SELECT @@VERSION

SET @var = @var + 1END

GO

T. como você náo tem interesse nos resultados reais retornados pela consulta, paraas janelas de consulta customer, Executive e AdHocReports, selecione euery eueryoptions. No painel esquerdo da caixa de diálogo euery options, selecione o nó Gride, em seguida, marque a caixa de seleção Discard Results After Execution.

Inicie o System Monitor, remova todos os contadores padrão e adicione o contadorsQlServer:workload Group stats: cPU usage o/o pàtã as instâncias AdHocReport-Group, Customercroup e ExecutiveGroup, como mostrado aqui.

8.

9. Inicie uma segunda instância do system Monitor, remova todos os contadores pa-drão e adicione o contador sQlServer:Resource pool Stats:cpu usage o/o pãrã ãsinstâncias AdHocReports, customers e Executives, como mostrado a seguir.

Page 422: Livro_SQL

Capítulo L3 r Otimizando o Desempenho

10. Execute o script na jaîela de consulta de Customer e observe os gráficos no SystemMonitor.

Execute o script na janela de consulta de Executive e observe os gráficos no SystemMonitor.

Execute o script na janela de consulta de AdHocReports e observe os gráficos noSystem Monitor, como mostrado aqui.

tl.

12.

42t

Page 423: Livro_SQL

422 Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 200g

13. Troque pata asjanelas de consulta Customer, Executive e AdHocReports e interrom-pa a execução da consulta.

Limite a utilização de recursos do pool AdHocReports, executando o código a se_guir:

ALTER RESoURCE poOL AdHocReportstfì/ITH (MAX-CPU_PERCENT = 5)

ALTER RESOURCE P00L AdHocReportsI¡IITH (MIN_CPU_PERCENT = 0)

ALTER RES0URCE p00L ExecutiveslvrTH (MAX_CPU_PERCENT = 20)

ALTER RESOURCE p00L Executivesr^rITH (MIN_CPU_PERCENT = 20)

ALTER RES0URCE p00L CusromersI^IITH (MAX_CPU_pERCENT = 75)

ALTER RESOURCE p00L Customersh,]TH (MIN-CPU-PERCENT = 50)

ALTER RESOURCE GOVERNOR RECONFICUREGO

Execute o script na janela de consulta customer e observe os gráficos no systemMonitor.

Execute o script na janera de consulta Executive e observe os gráficos no systemMonitor.

Execute o script na janela de consulta AdHocReports e observe os gráficos no Sys_tem Monitor, como mostrado a seguir.

14.

15.

16.

17.

Page 424: Livro_SQL

Capítulo L3 r Otimizando o Desempenho 423

CUIDADO Limitando recursos

Mesmo com o Resource Governor ativado, o SQL Server ainda procura maximizar os recursosdisponíveis para todos os pedidos que estão sendo executados concomitantemente. Se vocêdefine um limite máximo para um pool de recursos, as conexões atribuídas ao pool podemusar mais recursos do que o máximo configurado. Se outras sessões que estão sendo execu-tadas não precisarem de todos os recursos, qualquer quantidade de recursos livres poderá serusada por qualquer sessão, mesmo que isso faça a sessão ultrapassar os limites de recurso deseu pool de recursos designado.

Page 425: Livro_SQL

424

Resumo da lição

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

r O Resource Governor é usado para limitar a alocaçã.o de CPU, memória ou ambospara uma ou mais conexões.

I As conexões são atribuídas a um grupo de carga de trabalho usando-se uma funçãoclassificadora.

I Um grupo de carga de trabalho é atribuído a um pool de recursos.

r Os pools de recursos são configurados para gerenciar recursos de CPU e memória.

Revisão da liçãoResponda a pergunta a seguir para testar seu conhecimento sobre aLiçáo 2. Aperguntatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. você é o administrador de banco de dados da coho vineyard. Após a consolidaçáodos bancos de dados de estoque, clientes e pedidos de todas as vinícolas, a equi-pe de marketing quer executar consultas ad hoc para propósitos de análise. osusuários podem executar qualquer consulta que possam construir, independentedo impacto que isso possa ter no desempenho do banco de dados. Infelizmente,os mesmos bancos de dados estão sendo usados para criar e processar pedidos decliente. A gerência não quer restringir as consultas que o marketing pode executar,mas quer que você garunta que os pedidos dos clientes possam ser criados e proces-sados em tempo hábil. O que pode ser usado para limitar o impacto das consultasde marketing para garantir que os pedidos dos clientes sejam processados?

A. Configurar a opçâo de mtixtmo grau de paraleltsmo.

B. Implementar o Resource Governor.

C. Configurar o limite de custo do regulador de consultas.

D. Limitar a utilizaçã,o de memória para usuários do marketing.

Page 426: Livro_SQL

Lição 3: Usando views e funçöes degerencia mento d inâmicas

As views de gerenciamento dinâmicas (DMVs) e as funções de gerenciamento dinâmicas(DMFs) fornecem a infraestrutura de instrumentação que permite aos administradoresde banco de dados recuperarem informações de sistema, assim como monitorar, diag-nosticar e corrigir problemas. Nesta lição, você vai aprender sobre as DMVs e as DMFsdisponíveis pan otimizar o desempenho.

NOTA Convenções de terminologia

Por simplicidade, o conjunto inteiro de código de instrumentação disponível dentro do SQLServer é referido coletivamente como DMVs, independente de você estar usando views ouuma função.

Capítulo 13 r Otimizando o Desempenho

Após esta lição, você será capaz de:

I Entender as categorias de DMVs e DMFs

I ldentificar DMVs e DMFs de desempenho e monitoração importantes

Tempo estimado para a lição: 20 minutos

Categorias de DMVTodos as DMVs são armazenadas no esquema sJS e podem ser agrupadas em dezenasde categorias mais amplas. Como as DMVs usam um esquema de atribuiçáo de nomespadráo e os nomes utilizados são muito descritivos, separar as categorias é rczoavel-mente simples. A Tabela 13-1 lista as categorias de DMV mais importantes que sãoutilizadas para otimização de desempenho.

Tabela 13-1 Categorias de DMV

425

dm_exec_*

dm_io_*

dmos*

Utilização de espaço e índice de banco de dados geral

Estatísticas de consultas que estão em execução, assim comoconsultas que foram concluídas e ainda têm planos na cache deconsulta

Estatísticas do subsistema de disco

Estatísticas relacionadas ao uso de recursos de hardware

Page 427: Livro_SQL

426

Estatísticas de banco de dados

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

As DMVs mais comuns utilizadas para reunir estatísticas de banco de dados sáo:

t sys. dm _db jndex _us age _s tats

t sy s. dm _db _inde x _o p era t ío n al _s ta t s

t sy s. dm _db _ín de x __¡t hy s tc al *s ta ts

t sys. dm _db 1mís síng jndex ¿roupst sys. dm _db 1mís síng _índex ¿roup _s tats

t sy s. dm _db 1ni s s tng _ín de x _de taík

Os índices são criados para melhorar o desempenho de consultas específicas. Contudo,também hâ uma sobrecarga de manuten çâo para cada índice, quando são feitas mo-dificações nos dados. Ter um número insuficiente de índices pode causar problemasde desempenho, assim como ter índices que não sáo usados ou são usados muitoraramente. Aview sys.dm_db_índex_usage_stats contém o número de vezes (e aúlti-mavez) que cada índice foi usado para satisfazer uma busca, varredura ou pesquisa,assim como o número de vezes e a última vez que uma atualização foi realizada emcada índice. Se um índice náo tem nenhuma busca, varcedura ou pesquisa, então elenâo estâ sendo usado. Se um índice não foi usado para satisfazer uma busca, vaÍre-dura ou pesquisa por um período de tempo significativo, o SQL Server não está maisutilizando o índice.

Sys.dm_db_index_operatíonal_stats é uma funçáo que recebe quafro parâmetros opcio-nais: database_íd, object_íd, índex_íd e partítton_íd. Essa funçáo retorna estatísticasde bloqueio, fechamento e acesso para cada índice, que podem ajudâ-lo a determinar oquanto um índice está sendo usado expressivamente. Essa função também o ajuda adiagnosticar problemas de disputa resultantes de bloqueio e fechamento.

Sys.dm_db_índexjhysícal_stats éuma função que recebe cinco parâmetros opcionais:database-íd, object_íd, índex_td, pnrtitíon-id e mode. A função retorna estatÍsticas detamanho e fragmenlaçâo pan cada índice e deve ser a principal fonte para se determi-nar quando um Índice precisa ser desfragmentado.

Quando você envia uma consulta para o SQL Server, ela ê analisada e otimizada paradeterminar a maneira mais eficiente de satisfazêla. Então, o plano de execuçáo geradoé usado para executar a consulta. Mesmo que uma tabela náo tenha um índice, o SQLServer ainda mantém estatísticas de distribuiçáo básicas para cada coluna da tabeTa.Portanto, mesmo na ausência de um índice, o Optimizer pode determinar se um índiceseria vaniajoso para salisfazer a consulta. Se você tiver ativado a opção AUTO_CREA-TE_STATISTICS e o Optimizer determinar que évantajoso fazer isso, serão geradas auto-maticamente estatísticas que poderáo ser subsequentemente utilizadas pelas consultaspara se ter um melhor desempenho.

Quando o optimizer determina que um índice seria vantajoso, mas não existe, é criadauma situaçáo referida como falta de Índice. Embora uma falfa de índice gere estatísticasautomaticamente, um índice ainda é mais eficiente para saúsfazer uma consulta se

você tiver ativado a criaçâo automâtica.

Page 428: Livro_SQL

Uma das categorias mais interessantes disponíveis no SQL Server 2008 são as viewssys.dm_db1nßsíng_índex_*. Quando é geradaumafalta de índice, o SQL Server regis-tra os detalhes da falta de índice, os quais podem então ser vistos com as views sys.

dm_db1níssíng_índex_*. A view sys. dm_db1níssíng_index-detaíls contém estatísticasagregadas sobre quantas vezes uma falta de índice foigeruda para determinada possibi-lidade de índice, o que você pode usar para avaliar se deve criar o índice.

MËLHoREs PRÁT|cAs Determinando quais índices devem ser criados

Os DMVs de índice ausente podem listar várias permutaçöes de um grupo de colunas para

usar na criação de índices. Cada combinação exclusiva de colunas produzindo uma falta de ín-dice gera uma entrada. Aplicando algumas agregações básicas nos dados, nas views de índiceausente, você pode determinar quais índices são mais vantajosos. Lembre-se de que o custode manutenção de um índice não está incluído na agregação. A consulta que você pode usarpara calcular um "fator de utilidade" é:

SELECT

FROM

(SELECT user_seeks * avg_total_user_cost * (avg_user_jmpact * 0.0L) AS

index_advantage, migs.* FROM sys.dm_db-missing-index-group-stats mìgs) AS

mì gs_advINNER l0IN sys.dm_db_mìss'ing_index-groups AS mig

0N m'igs_adv.group_handle = mig.index-group-handleINNER IOIN sys.dm-db-mìssìng-index-detai'ls AS mid

0N mig.index_handle = mid.index_handleORDER BY mì gs_adv.'i ndex_advantage

Se a vantagem do índice atingir 10.000, você tem um índice que pode proporcionar um im-pacto significativo no desempenho da consulta, mas precisará comparar a vantagem no de-sempenho em relação à sobrecarga de manutenção adicional. Se a vantagem do índice ultra-passar 50.000, a vantagem da criação do índice será bem maior do que qualquer manutençãonecessária devida às atividades de manipulação de dados.

Capítulo L3 r Otimizando o Desempenho 427

Estatísticas de consultaAs DMVs sys.dm_exec_* retornam informações relacionadas à conexão com a instância,assim como à execução de consultas.

As seguintes DMVs retornam informações sobre conexões e pedidos sendo ativamenteexecutados:

J Sy s. dm _exec _c o nn ec tio ns

) Sys. dm _exec _ses síons

I Sys.dm_exec requests

Sys.dm_exec_connectíons contém uma linha para cada conexáo com a instância. Dentrodessa view, você pode descobrir quando a conexão foi estabelecida, junto com proprie-dades de conexão e configurações de criptografr,a. Essa view também informa o númerototal de leituras e gravações da conexão, assim como a última vez qúe uma leitura ougravação foi executada.

Page 429: Livro_SQL

428

Sys.dm-exec-sesstons contém uma linha para cada sessão atualmente autenticada.Além das informações de login, essa DMV também controla o estado atual de cað,aopção de consulta possível e o status atualda execução. Essa DMVtambém retorna aduraçáo da execuçáo acumulada de leituras, gravações, CPU e consultaparaa sessão.

Sys.dm-execlequests conÍ.ém uma linha para cada pedido correntemente em execuçãona instância. Você pode vsar a coluna blocking_session_id para diagnosticar proble-mas de disputa. Essa DMV também contém o tempo de início, tempo ãecorrido, tempoestimado pan a conclusão, leituras, gravações e cpu do pedido. Além disso, você poderecuperar o banco de dados e o comando que estão sendo executados, junto com idènti-ficadores da instrução sQL e do plano de consulta associados ao pediáo.

Cada consulta execuÍ.ada precisa ser compilada, sinalizad,a e comparada com a cachede consulta. Se for enconÍrada uma correspondência, o otimizadòr usarâ o plano deconsulta colocado na cache paraexecufar a consulta. Se não for encontrada uma corres-pondência, o plano de consulta gerado serâgravado na cache de consulta.

A DMV sJ/s;dm: exec'query_stcts contém estatísticas detalhadas sobre o desempenhoe os recursos consumidos por cada consulta que está na cache de consulta. Essa DMVlista a última vez em que a consulta foi executada e quantas vezes foi executada, juntocom os tempos de execução mínimos e máximos, as leituras/gravações/CpU lógicalfîsicae um identificador para o plano de consulta gerado pelo Optimizer.

o SQL server aÍmazena o plano de consulta e o texto de cada consulta executada na ca-che de consulta, determinados por um valor exclusivo chamado ídentficador A funçãosys.dm-exec-sql-text retorna o texto da instruçáo SQL associada ao identificador quefoi passado. Sys.dm-exec_query__¡tlan aceita um identificador de plano e retorna o plánode exibição XML correspondente.

Se você quisesse ÍetofnaÍ a consulta e o plano de exibição XML de todas as consultasatualmente em execuçáo, poderia usar a seguinte instrução:

sELEcr * FR0M sys.dm-exec_requests cRoss Apply sys.dm_exec_query_p1an(plan_handl e)

CROSS APPLY sys. dm_exec_sql_text(sq1_hand'l e)

O comando a seguir poderia ser usado para relornar a instruçáo SeL e o plano de exibi-ção XML de cada consulta colocada na cache de consulta:

sELEcr * FRoM sys.dm-exec-query-stats cRoss Apply sys.dm_exec_query_p1 an (pì an_handl e)

CROSS APPLY sys.dm_exec_sql_text(sq1_handle)

Estatísticas do subsistema de discoA função sys.dm-ío-vírtuallftle_stats retorna estatísticas sobre as leituras e gravaçõesde cada arquivo de banco de dados. Essa view retorna o número agregado de-leituras egravações, assim como os bytes lidos e gravados emcadaarquivo desde que a instânciafoi iniciada. Você também pode recuperaÍ uma informaçáo chamada Iosiall para leitu-ras e gravações. Quando o SQL Server precisa esperar que o subsistema de disco se tor-ne disponÍvel para satisfazer uma openção de leitura ou gravação, ocorre uma IOStall

Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 200g

Page 430: Livro_SQL

(paralisação deUO lenuada e saídal). o tempo das IOStalls, medido em milissegundos,é registrado paracada arquivo de banco de dados.

Você usa as informações retornadas pela funçáo sys.dm_ío_vtrtual_stats para deler-minar se uma disputa de disco está contribuindo para problemas de desempenho. Você

também pode usar essa view para determinar se sua UO (entrada e saída) de disco estábalanceada entre os arquivos do banco de dados ou se criou um ponto ativo de disco.

ADMY sys.dm_ío__pendínglequests contémuma linha paracada pedido que está espe-

rando o subsistema de disco concluir um pedido de I/O (entra da e saîda) . Em um sistemaocupado, você sempre encontra entradas nessa view. Contudo, se houver um pedido que

apareça frequentemente ou permaneça por um tempo muito longo, você provavelmentetem um problema de gargalo de disco que precisa ser solucionado.

Recursos de hardware

, -- ---{lnr,-dos-eruos que-n+uitas-,pessoas-eo$et-errì-ao""tentar-identifiear-p.roblemas de-desern--,-----.,---

, penho é pensar que uma consulta de desempenho deficiente pode ser corrigida pela

1 adição de índices ou pela reescrita de código. Uma consulta poderia ser lenta devido a

' um código ineficiente ou à falta de índices. Contudo, uma consulta também poderia ser: lenta devido a problemas de disputa por recursos que a fazem esperar que um recurso

se torne disponível.

O SQL Server usa um modelo de processamento cooperativo para atender pedidos.Cada pedido executado recebe um UMS (User Mode Scheduler - agendador de modode usuário). A não ser que você tenha alterado a configuraçã,o padráo através daopçáo de configuração set ffinífii mask, o SQL Server tem um UMS por processadordisponível para atender pedidos de consulta. Como apenas um comando pode serexecutado porvez em um processador, o número máximo de pedidos que podem estarem execução concomitantemente éigual ao número de UMSs que o SQL Server temem execuçáo. Os pedidos que ultrapassam esse número são adicionados em uma filade executáveis, na ordem em que foram recebidos. Depois que um pedido chega aotopo da fila de executáveis e um UMS se torna disponível, ele é colocado na fila deexecuçáo do UMS e começa a ser executado. No momento em que o processo precisaque um recurso seja alocado, como um bloqueio a ser adquirido, uma llO (entrada e

saída) de disco se torne disponível ou memória seja alocada, o pedido é, retftado doprocessador e colocado em uma fila de espera para dar lugar para o próximo pedidoda fila de executáveis começar a ser executado. o pedido permanece na fila de esperaaté que o recurso se torne disponível e, entáo, é movido para o final da fila de execu-táveis, onde precisa esperar atrâs de todos os outros pedidos, antes de voltarparaoUMS para continuar a execuçáo.

Se houver disputa por recursos, um pedido poderâfazer muitos ciclos entre as ftlas de

executáveis, execução e espera, antes que a consulta possa ser concluída. Removendoos gargalos de processamento, você pode melhorar o desempenho das consultas.

Quando um pedido é enviado para a fila de espera, o SQL Server configura um valorchamado típo de esperû que indica o tipo de recurso em que o pedido está esperando.Assim que um tipo de espera é definido, o SQL Server ativa um cronômetro. Quando o

Capítulo 13 r Otimizando o Desempenho

Page 431: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

recurso se torna disponível, o SQL Server para o cronômetro e registra o período de tem-po que o pedido teve de esperar que o recurso se tornasse disponível, o chamado tempode espera. o sQL server Lambém configura um cronômetro quando um pedido entra nafila de executáveis, a chamada espera de sínal, que registra quanto tempo demora paraque um processo chegue ao topo da fila e comece a executar.

A DMV sys.dm_os ',watt_stats lista o vaTor agregado da espera de sinal e do tempo deespera pan cada tipo de espera. A espera de sinal junto com o tempo de espera é umvalor agregado desde a última vez qtJe as estatísticas foram zendas. Embora a maioriadas DMVs só possa ser zerada pelo reinício da instância, o tempo de espera e o tempo deespera de sinal podem ser zerados por meio da execução do código a seguir:

DBCC SQLPERF(I^IAITSTATS, CLEAR)

-- , - --lnþglx as estatísticas de espera sejam informaçôes-extremamente-valiosas,pa.raJiagnostìcar:problemas de desempenho, nos quase i-0 anos desde que as informaçöes detalhadas estãodisponíveis, a Microsoft ainda não documentou os tipos de espera, todos os quais têm nomesextremamente enigmáticos. O melhor recurso disponível para se entender os tipos de esperae como resolver problemas não cobertos por eles é o site de Gert Draper (http://www.sqldev.net).

MAIS INFORMAçöES Tipos de espera

'íQ o'to DE ExAME

Para o exame, você precisa saber o objetivo do principal conjunto de DMVs e como usar cadauma delas para diagnosticar e resolver problemas de desempenho.

fr"rt" rápido1. Qual é a diferença entre Ðls.dm_db_índex_operatíonûl_stûts e sys.dm_db_ín-

dex jthysícal_stats?

2. Qual DMVvocê pode usar para recuperar estatísticas de execução de cada co-nexão que está executando um comando?

Respostas

l. Sys.dm_db_index_.¡thysícal_stats retorna estatísticas de fragmentaçáo de cadaíndice e sys.dm_dm_tndex_operatíonal_stats retorna estatísticas de bloqueio,fechamento e acesso de cada índice.

2. ADMY sys.dm_execlequests rctorna uma linha para cada comando corrente-mente em execução.

PRÁTtcA Avaliando índices ausentesNeste exercício, você vai usar as DMVs para encontrar e avaliar faltas de índices.

Page 432: Livro_SQL

1. Abra uma nova lanela de consulta e execute a consulta a seguir no banco de dados

AdventureWorksTest:

SELECT Cìty, PostalCode, AddresslinelFR0M Person.AddresslirlHERE Ci ty = ' Seattl e'GO

SELECT C'ity, PostalCode, AddresslinelFROM Person.AddressWHERE City = 'seattle' AND Adressline2 IS NOT NULL

GO

SELECT Cìty, PostalCode, Addresslinel-FROM Person.Addressh/HERE City LIKE 'D%'GO

2. Execute a consulta de avaliação de índice a seguir para inspecionar os índices suge-

ridos pelo Optimizer:

Capítulo 13 r Otimizando o Desempenho 431

SELECT *

FROM

(SELECT user-seeks * avg-total-user-cost * (avg-user-ìmpact * 0.01) AS

index-advantage, migs.* FROM sys.dm-db-missì ng-index-group-stats mj gs)

AS mìgs_advlNNER JOIN sys.dm-db-mìssìng-index-groups AS m'ig

0N m'igs-adv.group-handle = mig'ìndex-group-handleINNER IOIN sys.dm-db-mìssing-index-details AS mid

0N mig.'index-handle = mid.index-handle0RDER BY mìgs-adv.ìndex-advantage

5. Execute o código a seguir:

SELECT City, PostalCode, AddresslinelFR0M Person.AddressWHERE C'ity LIKE 'Atlan%'go 100

4. Execute a consulta de avaliação de índice a seguir paÍaveÍ como os valores mudam

à medida que o número de execuções de consulta aumenta:

SELECT *FROM

(SELECT user-seeks * avg-total-user-cost * (avg-user-ìmpact * 0'01) AS

j ndex-advantage, mì gs.* FR0M sys'dm-db-missì ng-ìndex-group-stats mi gs)

AS migs_advINNER JOTN sys.dm-db-mìssing-index-groups AS mig

0N migs-adv.group-handle = mig'ìndex-group-handleINNER IOIN sys.dm-db-miss'ing-'index-details AS mid

ON mìg. jndex-handle = mjd.index-handleORDER BY mi gs-adv.i ndex-advantage

Page 433: Livro_SQL

432

Resumo da lição

Kit de Treinamento MCTS (Exam e 70-432): Microsoft SeL Server 200g

r As DMVS sys.dm-db-* fornecem informações sobre utilização de espaço e índice.r As DMVS sys.dm-exec-* são usadas para retornar informações sobre as consultas

correntemente em execuçáo, assim como sobre as consultas que ainda estão nacache de consuha. você também pode usar esse conjunto de DMVs para solucionarproblemas de obstrução, assim Como ver o último tipo de espera atribuído a umpedido.

r As DMVS sys.dm-ío-* são usadas para avaliar o desempenho do subsistema dedisco e determinar se existem gargaios de disco.

r A DMV sys.dm-os-waít-stats fornece informações sobre o ftatamento interno depedidos e se um pedido esrá esperando que recursos se rornern di;;;;i;.ir:-

Revisão da lição

y,Lq veeLuL ùuu uvrrrrçurlutrrrLU suule a Llçao ó. l\ perguntatyat':ry está disponível no cD do livro (em inglês) se você preferir revis á-la emformaroeletronlco.

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção,,Respostas,,no final dolivro.

1. Qual DMV você usaria para enconttar índices que não estão mais sendo usados?A. sys. dm _db _índex _operatíonal _s tats

B. sys.dm _db _índex jhysícal _s tats

C. sys. dm _db _índex _us age _s tats

D. sys. dm _db 1nís s íng _índex _detaíls

Page 434: Livro_SQL

Lição 4: Trabalhando com o Performance Data WarehouseO PerformanceData Warehouse, também referido como Performance Studio, é um novorecurso do SQL Server Management Studio (SSMS) que permite configurar e reunir da-dos de desempenho de instâncias em seu ambiente que podem ser usados para anâliseposterior. Nesta lição você vai aprender sobre os componentes do Perform ance Datawa-rehouse, assim como o modo de configurar ajustes de coleta, coleta de dados e analisarresultados.

Após esta lição, você será capaz de:I Criar um Performance Data Warehouse

I Criar itens de coleta e ajustes de coleta

I Definir um destino de coleta

I Configurar coleta de dados

Capítulo L3 r Otimizando o Desempenho

I Analisar os resultados da coleta de dados

Tempo estimado para a lição: 20 minutos

Performance Data Warehouseo Performance Data warehouse ébaseado em um novo recurso do sel Server 2oo8chamado DatG Collector. O Data Collector é baseado em pacotes SSIS (SQL Server Inte-gration Services) e jobs do SQL Server Agent, como mostrado naFigara 13-6.

A coleta de dados do Performance Data Warehouse é configurada usando-se um dosseguintes tipos de coletor:

r T-SQLQuery

r SQL Trace

I Performance Counter

r QueryActivity

O coletor T-SQL Query permite especificar uma instruçáo SELECT a ser executada, assimcomo o banco (ou bancos) de dados onde a consulta será executada. Os resultados daconsulta sâo armazenados em uma tabela dentro do PerformanceDaT.aWarehouse, cujonome você define usando o parâmetro OutputTable da definiçãto do Data Collector. ComooData Collector gen a tabela dinamicamente, com base nos resultados da consulta de-finida, você deve garantir tudo o que segue:

I Que o conjunto de resultados não contenha colunas chamadas snapshot_time,snapshot_id ou database_name, pois elas são reservadas parao Data Collector.

r Todas as colunas no conjunto de resultados devem ter um nome.

r Não podem ser incluídas colunas com tipo de dados ímage, text, ntext ouXML.

r Apenas um conjunto de resultados seja retornado.

433

Page 435: Livro_SQL

434 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

@1:N

Pacote SSIS

' Jobdo \-1 SQL ASent _-,/

(volumes de disco)

Figura 13-6 O Data Collector.

lemDo de

O coletor SeL Trace suporía o rastreamento padráo ou um rastreamento definido pelo

usuário. Os resultados ão rastreamento são gravados em um arquivo e o Data Collector

vsa o rc\ejftt_traceéetta.ble para extrair o conteúdo do arquivo como um conjunto de

resultados pura s.ñatt.gadó no Performance Data Warehouse. Qualquer conflgÚtaçâo

vâlida pará um rastreatiento pode ser definida paru o Data Collector (por exemplo,

arquivoì de memória e filtros). Os resultados da coleta de dados sã,o aÍmazenados nas

tabelas snapshots.trace_info e snapshots.lÍace_dala, no Performance Data Warehouse.

O coletor Performance Counter permite definir qualquer combinaçáo de objetos, conta-

dores e instâncias de contador. Os resultados da coleta de dados sã'o armazenados na

tabela snapshots.performance-counters, no Performance Data Warehouse.

O coletor Query Activity reúne informações de sJS.dm-exec-requests, sys.dm-exec-

ses s íons e sys. dm _exec _query -s tats.

execuçaodo DataCollector -Ë""""_2

-t,t lI

,-"-ffi.r( linstância do )

Vseø

Histórico de auditoria e execução

ffi orcn DE ExAME*

puru o exame, você precisa saber qual é o objetivo do Performance Data Warehouse, os com-

ponentes nos quais ã coleta de dados é baseada e as informaçöes que podem ser coletadas'

L:1

Page 436: Livro_SQL

t't"rt" rápido

1. Em quais recursos o PerformanceDafaWarehouse ébaseado?

2. Quais tipos de coletor estão disponíveis no SQL Server 2008?

Respostas

1. O PerformanceData Warehouse é baseado na infraestrutura do Data Collector.A coleta de dados ébaseada em pacotes SSIS e jobs do SQL ServerAgent.

2. O SQL Server 2008 vem com os tipos de coletor T-SQL Query SQL Trace, QueryActivity e Performance Counter.

Nos exercícios a seguir, você vai configurar o PerformanceDafa Warehouse, definir os

- ajustes d

PRÁflcA Configurando o Performance Data Warehouse

Capítulo 1,3 I Otimizando o Desempenho

Neste exercício, você vai configurar o Performance Data Warehouse

1. Inicie o SSMS, conecte-se em sua instância, expanda o nó Management, clique como botáo direito do mouse em Data Collection e selecione Configure ManagementData Warehouse.

2. Clique em Avançaq selecione Create Or Upgrade A Managemenf Data Warehouse,como mostrado aqui, e clique novamente em Avançar.

435

Select conf¡guration tãskSelect a tæk to conf¡gure ô ñðnaqement dåta wE¡ehouse or È dðtà collectionset.

SeleÈl ð tásk tÒ psfoim:

,Q..f "¡ li:o'..l9ÍC!.".Slt!,,':1;r;¡.¡,r " :, :::.i-:.,,:,.'.:t1'ì, :,,,5: , ,¡¡', ,,:..j'¡:¡,¡.

Conligu¡e* thi+ ¡hstênce to stdt colleding datð to tr e*isting môEgerenl dôtôwôtehouse,

l- ld".l . "f,E"ç(llf=-"=-lGñI] [Fr^{.;r*ì t c""i'l

'.å

*X

Page 437: Livro_SQL

436 Kit de Treinamento MCTS (Êxame 70-432): Microsoft SQL Server 2008

3. Crie um novo banco de dados, chamado PerfData, com todas as configurações pa-

drão. Clique em Avançar.

4. Selecione o login correspondente à sua conta de serviço no SQL Server (a que neste

exercício se chama SQL2OO8SBSDE) e o role mdw_admin, como mostrado aqui.Clique em Avançar.

5.

6.

Clique em Concluir para ctiat as estruturas dentro do banco de dados PeyÐata.

Examine os objetos que foram criados no banco de dados PeSfData.

Neste exercício, você vai configurar a coleta de dados do Management Data Warehouserecentemenle criado.

1. Clique com o botáo direito do mouse no nó Data Collection e selecione Configure

Management Data Warehouse.

2. Clique em Avança¡ selecione Set Up Data Collection, como mostrado aqui, e cliquenovamente em Avançar.

Page 438: Livro_SQL

Capítulo 1-3 r Otimizando o Desempenho

3. Selecione o local de seu banco de dados PegDatG e deixe o diretório Cache em bran-co. Clique em Avançar.

Clique em Concluir.

Expanda a pasta System Data Collection Sets, clique com o botáo direito do mouseno coletor Disk Usage e selecione Properties. Examine as configurações do ajuste dacoleta de dados, como mostrado aqui.

4.

5.

437

Page 439: Livro_SQL

438

Neste exercício, você vai examinar os relatórios criados por padráo para os ajustes de

coleta de dados de sistema.

1. Clique com o botão direito do mouse no nó Data Collection, selecione Reports, Ma-

nagement Data Warehouse e Disk usage summary.

2. Examine os resultados, que devem ser semelhantes aos mostrados a seguir.

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Disk Usage Collection Seton HOTEK2 at 1 1 /6Æ008 2:24:28 AM

This ÌeDdt D@id6s ðn ovdvtu of the di* sce used foÌ dl daÞbæes on lhe sffi ând qmúì lEnds fo¡ the dðb file Ðd k lq ße for each dôÉðæfor thelôs 3 ællection æints between l1/6/200É 201:32M ðnd l1/6200É 2:05524M.

; 1S4.75

È-f;*

õSQtSenæræm

Resumo da lição

I o Data Collector é um novo componente de infraestrutura disponível no SQL Server

2OO8 que é baseado em pacotes SSIS e em jobs do SQL Server Agent.

I Você pode definir quatro diferentes tipos de coleta de dados - T-SQL Query SQL

Trace, Performance Counter e QueryActivify.

I O coletor T-SQL Query é o mais flexível, permitindo especificar a instrução SELECT

a ser executada, assim como os bancos de dados nos quais a consulta vai ser exe-

culada.

r Todos os dados reunidos pelo Data Collector, assim como as definições de todos os

ajustes de coleta, sáo atmazenados no Performance Data Warehouse.

!

!,,,+---- -1.00

1

10.m 0 '___ì613, 0 !iì

1.Æ t 0:

-_,i s.50, ûj

_ t..- _--l52.00 | 0 i

il$l

Page 440: Livro_SQL

Revisão da lição

Responda a pergunta a seguir pataÍestar seu conhecimento sobre a Liçáo 4. A pergunta

também está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

1. Como parte de uma recente aquisição, agora a Humongous Insurance tem instân-cias do SQL Server das versões 6.5 até,9.0. Uma variedade de produtos de outrosfornecedores e código personaTizado foittilizada no passado para gerenciar acapa-cidade no ambiente do SQL Server. Seu gerente quer consolidar tudo em uma única

_ plataforma que possa ser usada para execttar tarcfas de gerenciamento de capaci-

uma solução que tenha custo mínimo e exija o mínimo trabalho para configurar e

: manter. Que solução você deve propor?

A. Instalar uma instância do SQL Server 2008 e implementar gerenciamento ba-

seado em diretivas.

B. Instalar uma instância do SQL Server 2008 e implementar um Performance

Data Warehouse.

C. Instalar uma instância do SQL Server 2008 e reescrever tudo usando SSIS.

D. Implementar o Microsoft System Center Operations Manager 2007.

NoTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

Capítulo L3 I otimizando o Desempenho 439

Page 441: Livro_SQL

440

Revisão do capítulo

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Pararelorçar o que aprendeu neste capítulo, você pode:

r Ler o resumo do capítulo.

r Examinar a lista de termos-chave introduzidos neste capítulo.

r Completar o cenário de caso. Esse cenário aborda situações reais que envolvem os

tópicos deste capítulo e solicita que você crie uma solução.

r Completar as práticas sugeridas.

a Fazer um teste.

Resumo do capítulo

tho que podem ser atribuídos a um pool de recursos, o que pode limitar os recursosde CPU e memória disponíveis para a conexáo.

r O DTA avalia uma ou mais instruções SQL e faz recomendações de índices que po-deriam ser criados ou eliminados para melhorar o desempenho.

r As DMVs são conjuntos de views e funções que acompanham o SQL Server e ex-põem dados de sistema e diagnóstico em um Íormato Íâcil de usar e manipular.

I O Performance Data Warehouse usa a infraestrutura do Daía Collector para agregarinformações que podem ser usadas para reaTizar gerenciamento de capacidade e

analisar tendências de desempenho.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando oglossário no final do livro.

r Funções de classificação

I Item de coleta

r Conjunto de coleta

I Destino de coleta

r coletor de dados

I Provedor de dados

r DMF (Dynamic Management Function)

I DMV (Dynamic ManagementView)

r Pool de recursos

I Arquivo de carga de trabalho

I crupo decarga de trabalho

I O Resource Governor permite classificar as conexões em de carsa de traba-

Page 442: Livro_SQL

No cenário de caso a seguir, você vai aplicar o que aprendeu neste capítulo. As respostasdessas questões podem ser encontradas na seçáo "Respostas", no final deste livro.

Cenário de caso: Projetando uma estratégiade automação para a Coho Vineyard

Histórico

Visõo geral da empresa

A Coho Vineyard foi fundada em 7947 como uma vinícola regional dirigida por uma famÊlia. Graças aos vinhos premiados que tem produzido nas últimas décadas, a Coho Vineyardteve crescimento sþificativo. Para continuar expandindo, várias vinícolas foram adquiri-das com o passar dos anos. Atualmente, a empresa possui 16 vinícolas; 9 estáo em Wa-ihingtonrOregon e€ali$érnta;e asãresÉan+es estãeloealizadasenrWismnsirte-Miehigan,todas nos EUA. As vinícolas empregam 532 pessoas, 762 das quais trabalham no escritóriocentral, que abiga servidores fundamentais para o negócio. A empresa tem 1.22 vendedo-res que viajam pelo mundo e precisam acessar a disponibilidade de estoque atualizada.

Mudanças planejadas

Afé agoru, cada uma das 16 vinícolas pertencentes à Coho Vineyard tem um site sepa-rado em suas instalações. A Coho Vineyard quer consolidar a presença na Web dessasvinícolas para que os visitantes dos sites possam comprar produtos de todas as 16 viní-colas a partir de uma única loja online. Todos os dados associados a esse site podem serarmazenados em bancos de dados no escritório central.

Para salisfazer as necessidades dos vendedores afé, que o projeto de consolidaçáo estejaconcluído, dados de estoque de cada vinícola são enviados para o escritório central ao fi-nal de cada dia. A replicaçáo por merge (mesclagem) foi implementada para permitir queos vendedores mantenham cópias locais de dados do cliente, do estoque e de pedidos.

Ambiente de dados existente

Boncos de dados

Atualmente, cada vinícola mantém seu próprio banco de dados para armazenaÍ todas asinformações empresariais. Ao final de cada mês, essas informações sã,o trazidas para oescritório central e transferidas para os bancos de dados mostrados naTabela 73-2.

Cenário de caso

Capítulo L3 r Otimizando o Desempenho 44t

Tabela 13-2 Bancos de dados da Coho Vineyard

Customer

Accounting

HR

lnventory

Promotions

180 megabytes (MB)

5OO MB

L00 MB

250 MB

80 MB

Page 443: Livro_SQL

442 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Depois que o projeto de consolidaçáo do banco de dados estiver concluído, um novo

banco de dados, chamado Order, sewirâ como data warehouse para a nova loja da Web.

Como parte de seu trabalho diârio, os funcionários também se conectarão periodicamen-

te no banco de dados Order usando um novo aplicativo Web interno.

O banco de dados HR contém dados sigilosos e é protegido com TDE (TransparentData

Encryption). Além disso, os dados databela Salary sáo criptografados usando um cer-

tificado.

Servidores de banco de dodos

Um único servidor, chamado DB1, contém todos os bancos de dados no escritório cen-

tral. DB1 está executando SQL Server 2OO8 Enterprise no Windows Server 2003, ediçáo

Enterprise.

O superintendente de tecnologia (CTO) está considerando a compra de uma nova máquina

para substituir o DB1, pois os usuários estão reclamando esporadicamente de problemas

e até algumas telas azuis no servidor que executa as instâncias locais do SQL Server.

Requisitos empresar¡a¡sVocê precisa projetar uma solução de arquivamento para os bancos de dados Customer

e Order. Sua estratégia de arquivamento deve permitir que os dados de Customer sejam

guardados por seis anos.

parupîepat:ar o banco de dados Orderparaos procedimentos de arquivamento, você cria

uma tabela particionada chamada Order.Sales. Order.Sales inclui duas partiçóes. A par-

tição 1 inclui atividade de vendas do mês ðorrente. A partição 2 é usada para aÍmazenar

atividade de vendas do mês anterior. Os pedidos feitos antes do mês anterior devem ser

movidos para outratabeTa particionada , chamada Order.Archive. A partição 1 de Order.

Archive inclui todos os dados arquivados. Apartição 2 petmanecevazia.

Um processo precisa ser criado para canegar os dados de estoque de cada uma das 16

vinícolas, diariamente, às 4h00min.

euatro grandes clientes enviam pedidos usando o esquema XML (Extensible Markup

Language) da Coho Vineyard para transações EDI (Electronic Data Interchange). Os ar-

quivos EDI chegam às lThOOmin e precisam ser analisados e carregados nos bancos de

dados Customer, Accountíng e Inventory, cada um dos quais contém tabelas relevantes

para fazer um pedido. Atualmente, a totina de importação EDI é um aplicativo em C+ +de um thread que leva entre três e seis horas para processar os arquivos. Você precisa

concluir o processo EDI às 17h3)min para salisfazer o acordo de atendimento SLA (Ser-

vice Level Agreement) fechado com os clientes. Depois que o projeto de consolidação

tiver terminado, a rotina EDI carregará todos os dados no novo banco de dados Order.

Há relatos de disputa generalizada no SQL Server central, enquanto dados estão sendo

importados durante o processo de consolidação noturno. Você precisa reduzir ou elimi-

nar a disputa.

Você precisa fazer o backup de todos os bancos de dados em todos os locais. No cenário

de pior caso, você pode perder no máximo cinco minutos de dados. Os bancos de dados

Page 444: Livro_SQL

Customer,Account,Inventory, Promotíons e Order podem ficar foru do ar no máximo por20 minutos, no caso de um desastre. Os dados com mais de seis meses nos bancos dedados Customer e Order podem flcar lora do ar por aÍé L2horas no caso de um desastre.

Responda as perguntas a seguir:

1. Como você determina a causa dos problemas de desempenho?

2. Como você soluciona os erros que estão ocorrendo nas vinícolas?

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

Usando o Performance Data Warehouse oara reun¡r

Capítulo 13 r Otimizando o Desempenho

dados para ot¡mização de desempenhoI Exercício 1 Configure um ajuste de coleta de Query Activity para todas as suas

instâncias que estáo executando SQL Server 2005 ou posterior.

r Exercício 2 Configure um ajuste de coleta de Performance Counter para todas assuas instâncias que congregam System, Processor, Network, Physical Disk e todosos objetos de desempenho do SQL Server para que você possa estabelecer um parâ-metro de desempenho para comparação.

I Exercício 3 Configure um ajuste de coleta de SQL Trace que inclua os eventosRPC:Completed e SQL:BatchCompleted para que você possa ter um parâmetro dedesempenho de consulta.

I Exercício 4 Configure um ajuste de coleta de T-SQL Query para reunir dados espe-cíficos de aplicativo que você possa usar para análise.

I Exercício 5 Estabeleça um único armazém de desempenho e combine dados devários destinos de coleta no armazémúnico.

r Exercício 6 Usando Reporting Services, defina relatórios personalizados para osdados que você está coletando.

Usando o Database Engine Tuning Advisor parareun¡r dados para ot¡mização de desempenho

r Exercício 1 Usando os resultados do ajuste de coleta de SQL Trace armazenadosno Performance Data Warehouse, faça uma análise usando DTA.

Usando Dynamic Management Views para reun¡rdados para ot¡mização de desempenho

r Exercício 1 Usando o tipo de coletor T-SQL Ouery configure uma coleta de dadospara as DMVs sys.dm_db_* e sys.dm_to_*.

443

Page 445: Livro_SQL

Faça um teste

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

os testes do CD deste livro (em inglês) oferecem muitas opções. Você pode fazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-licaçâo 70-432 . É possível configurar o teste para que ele simule a experiência de fazerum exame de certificação ou configurâ-lo no modo de estudo (study mode) para ver as

respostas corretas e explicações depois de cada questáo.

MA|S TNFORMAçöES Testes

Para mais detalhes sobre todas as opçöes de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

Page 446: Livro_SQL

Cluster de

O cluster de failover þfuílover clustering) do Microsoft SQL Server é baseado no cluster doMicrosoft Windows e é projetado para profeger um sistema contra falhas de hardware.Este capítulo explica o cluster do Windows e as configurações de cluster de failover doSQL Server.

Objetivo de exame neste capítulo:

I Implementar uma instância em cluster no SQL Server

Liçöes deste capítulo:

r Liçáo 1: Projetando o cluster do Windows 448

r Lição 2:Projetando instâncias em failover cluster do SQL Server 2008 468

Antes de começarParafazer as lições deste capítulo, você deve ter:

r Hardware capacitado para cluster ou o Microsoft Virtual Server 2005 R2

r Windows Server 2003 SP2 e posteriores ou Windows Server 2008 instalado em seuservidor

NOTA Servidor virtual

Você pode usar Virtual Server e Microsoft Virtual PC para simular configuraçöes de hardware.Ao contrário do Virtual PC, o Virtual Server suporta cluster do Windows e você pode usá-lopara construir um cluster de failover do SQL Server.

Page 447: Livro_SQL

446 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

IMPORTANTE Lições prát¡cas

Você usa o Virtual Server para todas as práticas deste capítulo. Para seguir os passos das prá-

ticas, você precisa criar três máquinas virtuais usando o Virtual Server e deve instalar todas as

três com o Windows Server 2003 Standard edição SP2 e posteriores ou com o Windows Server

2008 Standard e posteriores. Você deve configurar uma das máquinas virtuais como controla-dora de domínio e as outras duas como servidores membros no domínio. Você precisa alocar

51-2 megabytes (MB) de memória nas duas máquinas virtuais que configurar como servidores

membros e configurar a controladora de domínio com 192 MB de memória RAM. Para satisfa-

zer os requisitos de hardware dessa configuração do Virtual Servel você precisa de no mínimo1,5 GB de memória RAM na máquina host e as unidades de disco devem ser de pelo menos

7200 RPM para se ter um desempenho razoâvel.

As práticas das lições exigem que você tenha executado as seguintes ações:

r Criado três máquinas virtuais

i mitáTado o Windowlseñer zAiú ediÇáo Stándard e þoBGríores ouõWiñdowsTefrver 2008 ediçáo Standard e posteriores em cada máquina virtual

r Configurado uma máquina virtual como controladora de domínio

I Confîgurado duas máquinas virtuais como servidores membros no domínio

r Configurado a controladora de domínio com um único adaptador de rede, como

mostrado na Tabela 7 4- 1.

r Configurado os servidores membros com dois adaptadores de rede, como mostrado

naÏabela 74-I

r Confrgurado todas as redes como Guest Only

Tabela 14-1 Configuração de endereço TCP/IP das redes

Controladora de domínio

Servidor membro (Nó1-)

Servidor membro (Nó1-)

Servidor membro (Nó2)

Conexão local

Servidor membro (Nó2)

Conexão local

lP: 1-0.1.1-.1

Su b- rede: 255.255.255.0Gateway: 10.1.1-.1-

DNS:10.1.1.1-

Conexão local 2

Conexão local

lP:1"0.1.1-.2

Su b- red e: 255.255.255.0Gateway: L0.1.1.1DNS:10.1-.1.1-

Conexão local 2

Atribuir dinamicamente

lP: 10.1-.L.3

Su b- rede: 255.255.255.0Gateway: 1-0.1.1.1

DNS:10.1.1.l-

Atribuir dinamicamente

Page 448: Livro_SQL

IMPORTANTE

Uma discussão completa sobre o Virtual Server está fora dos objetivos deste livro. Você podeencontrar instruçöes passo a passo para executar cada uma das ações necessárias para confi-gurar o ambiente básico na documentação do Virtual Server. Se você tem hardware físico comcapacidade para clusteç pode fazer as práticas nesse hardware, pulando as etapas específicasde configuração do ambiente do Virtual Server.

Capítulo L4 r Cluster de Failover 447

Page 449: Livro_SQL

448

Lição 1: Projetando o cluster do Windows

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

O cluster do Windows é abase paÍa a construção de um cluster de failover do SQL Ser-

ver. Esta lição mostra como se configura um cluster do Windows e descreve as melhorespráticas de configuração.

IMPORTANTE Hardware compatível

A causa mais frequente de interrupçöes de um cluster é um hardware que não foi certificadopara cluster. Para garantir se o hardware que você está implantando é certificado para cluster;

ele deve aparecer no Windows Catalog. A solução de hardware inteira deve designar especifi-camente que é certificada para cluster; portanto, você precisa conferir as categorias de clusterdo Windows Catalog (que pode ser encontrado no endereço t¡n¡tw.microsoft.com/whdc/hcl/

defoult.mspx).

MAìS TNFORMAçöES clustei do wihdows

Você pode encontrar documentos, relatórios na Web, blogs e outros recursos relacionados ao

cluster do Windows no endereço wtww.microsoft.com/windowsserver2113/community/centers/clustering.

Após esta lição, você será capaz de:

I Projetar uma implementação de Microsoft Cluster Service (MSCS).

Tempo estimado para a lição:45 minutos

Componentes do cluster do WindowsO cluster do Windows permite que vários componentes de hardware atuem como umaúnica platalorma paÍa executar aplicativos. Em um cluster, cada componente de hard-ware é chamado de nó de cluster.

MAls INFoRMAçöES Versões de Windows Server

Quando este livro estava sendo produzido, o Windows Server 2008 tinha acabado de ser lan-

çado no mercado. Os exercícios deste capítulo, assim como as informações detalhadas sobre ocluster do Windows, são baseados principalmente no Windows Server 2003, com informaçöessobre o Windows Server 2008 incorporadas, quando disponíveis. Se você estiver implantandoo Windows Server 2008, consulte a documentação do produto para ver os detalhes sobre as

características do cl uster.

Primeiramente, você deve instalar nós de cluster com um sistema operacional como o

Windows Server 2OO3 ou o Windows Server 2008. Dependendo da ediçáo escolhida,diferentes números de nós sáo suportados, como mostrado naTabela 14-2.

Page 450: Livro_SQL

Tabelat4-2 Número de nós suportados para cluster

Windows Server 2003

Windows Server 2003

Windows Server 2003

Windows Server 2008

Windows Server 2008

Cada cluster do Windows tem um nome distinto, junto com um endereço IP (InternetProtocol) associado. O nome do cluster é registrado no DNS (Domain Name System -Sistema de Nomes de Domínio) e pode ser determinado na rede.

É criado umbanco de dados de quórum, contendo todas as informações de configuraçãodo cluster.

Todos os nós dentro de um cluster devem estar em um domínio do Windows e você tam-bém deve configurá-los no mesmo domínio. Você precisa criar uma conta de domínioparautilizar como conta de administrador de cluster.

Os elementos mais complicados dentro de um cluster sáo os grupos e recursos. Umgrupo de clusters é um nome lógico atribuído a um contêiner que comporta um ou maisrecursos de cluster. Um recurso de cluster consiste em tudo que pode ser configurado emum servidor. Exemplos de recursos de cluster são endereços IB nomes de rede, unidadesde disco, serviços do Windows e compartilhamentos de arquivo.

Um diagrama básico de um cluster de dois nós aparece naFigara 74-7.

Standard

Enterprise

Capítulo L4 r Cluster de Failover

Datacenter

Standard

Enterprise 16

449

lnstância do SQL Server 2008

Figura 14-1 Cluster de dois nós do Windows.

Rede pública

Page 451: Livro_SQL

450

Tipos de clusters

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

O Windows Server 2003 e o Windows Server 2008 suportam clusters padrão e um clus-ter de conjunto de nós de maioria.

Cluster padrão do WindowsUm cluster padrão, mostrado na Figura 74-1, tem um único banco de dados de quórumarmazenado no conjunto compartilhado. A unidade de quórum só é acessível por umnó porvez dentro do cluster. Nenhum dos outros nós do cluster pode acessar a unidade.Em caso de falha, outro nó assume a posse do recurso de disco que contém o banco dedados de quórum e continua as operaçóes de cluster.

Cluster de conjunto de nós de maioriaA principal diferença de um cluster de corylunto de nós de maíoría (mojorífri node setcluster) é que qma cópia do b¿nco de dados de quórum é armazenada de formalocal emcada nô do cluster.

NOTA Quórum local

A localização do quórum é %SystemRoot%\Cluster\QoN.%ResourceGUlD%$\%ResourceGUID%$\MSCS. Em cada nó é criado um compartilhamento chamado\\%NodeNameTo\%ResourceGUlD%$. Você não deve modificar esse diretório nem alterar aspermissöes nesse diretório ou no compartilhamento de forma alguma.

O cluster de conjunto de nós de maioria recebe esse nome porque a maioria dos nós pre-cisa estar online para que o cluster esteja online. Por isso, você só cria clusters de con-junto de nós de maioria quando tem três ou mais nós configurados no cluster. A Tabela74-3 mosfra uma comparaçáo de quantos nós podem estar offline com o cluster aindaoperacional para um cluster padrãto e para um cluster de conjunto de nós de maioria.

Tabela 14-3 Tolerância à falha cluster

Page 452: Livro_SQL

Examinando a Tabela 74-3,você, poderia se perguntar por que alguém usaria um clusterde conjunto de nós de maioria, pois parece que ele oferece menos tolerância do que umcluster paûão.

O banco de dados de quórum contém a configuração do cluster e controla as operações

de cluster. Se o banco de dados de quórum se tornasse indisponível, o cluster ficariaindisponível. Um cluster paüão usa um único banco de dados de quórum em um únicoconjunto de unidades compartilhado. A falha do conjunto de unidades compartilhadoou a corrupção do banco de dados de quórum faz com que o cluster inteiro se torne in-disponível. Um cluster de conjunto de nós de maioria tem uma cópia do banco de dados

de quórum em cada nó sincronizada com todas as outras cópias; portanto, isso eliminao banco de dados de quórum como ponto de falha único em um cluster.

Configuração de segurança

Você deve aplicar todas as melhores prâticas de segurança do Windows em cada nó den--'-tÍ'o'de um elùSler. Desativt tõdoß olservi-ços que nãofurem R-ecessãri-os. -

Você precisa criar uma conta no domínio para ser usada como conta de administradorde cluster. Em cada nó do cluster, você deve adicionar essa conta de domínio como mem-bro dos grupos de administradores locais, antes de configurar o cluster.

Capítulo 14 r Cluster de Failover

cUlDADO Sistema operacional criptografado

Para suportar a criptografia do sistema de arquivos em uma configuração de cluste[ o Ker-

beros deve ser ativado e as contas do computadoç junto com a conta de serviço de clusten

devem ser confiáveis. Se você optar por criptografar o sistema de arquivos, também deverálevar em conta a degradação no desempenho que todas as operaçöes de leitura e gravaçãoacarretam por causa dos processos de criptografia/descriptografia.

45t

Você não pode usar uma conta de usuário normal pan o serviço de cluster; o serviçode cluster deve ser capaz de 7er e gravar no Registro, montar e desmontar unidades de

disco, parar e iniciar serviços, e executar outras tarefas. Essas tarefas só sáo possíveis

sob uma autoridade de administrador local.

Configuração de disco

Você pode construir clusters usando unidades SCSViSCSI (Small Computer System In-terfacellnternet Small Computer System Interface) ou unidades Fibre; as unidades IDE

(Integrated Development Environment) não são aceitas para cluster. Se você está cons-

truindo um cluster que contém mais de dois nós, tem Windows Datacenter ou tem aversão de64bits do Windows, enfão está restrito a usar somente unidades Fibre.

os clusters náo aceitam o uso de discos dinâmicos; você só pode usar discos básicose pontos de montagem para cluster. Como as letras de unidade A, B, C e D iâ sâo alo-cadas para recursos locais em cada nó, um total de 22 letras de unidade podem ser

utilizadas.

Page 453: Livro_SQL

452 Kit de Treinamento MCTS (Ëxame 70-432): Microsoft SeL Server 2008

NOTA Sistemaoperac¡onal

Verifique com seu fornecedor de SAN (Storage Area Network) para determinar se seus nós podemser inicializados a partir da SAN. Se seus nós não podem ser inicializados a partir da SAN ou sevocê está usando armazenamento ligado diretamente, deve instalar o sistema operacional emuma unidade de disco rígido interna, que utilizará para inicializar o nó. lnstalar o sistema opera-cional em uma unidade de disco rígido interna em cada nó é a configuração mais comum.

,\o configurar os discos, você deve alocar uma unidade exclusivamente para uso doquórum.

Você precisa configurar o MS DTC (Microsoft Distributed Transaction Coordinator) emtodos os clusters. o MS DTC exige espaço em disco em uma unidade que esteja confi-gurada como uma dependência do recurso MS DTC que você adiciona manualmente nocluster, após criá-7o.

Q disco neces.sário-par¿ MS DTCcrlarmli[e,¡na para-a maioria.dos.administradores.Você precisa certificar-se de ter o número máximo de letras de unidade para uso dosbancos de dados, enquanto também equilibra as melhores prâticas de desempenho eestabilidade. A recomendação das melhores prâticas para um cluster é alocar um discoexclusivo pan o recurso MS DTC e, então, configurar o MS DTC e sua unidade de discoassociada em um grupo do clusters separado.

Se não estiver contando com MS DTC em seus aplicativos, você está desperdiçando umaunidade de disco que poderia ser mais bem utilizad a para bancos de dados. portanto, sevocê não tem unidades suficientes para produzir a configuraçáo necessária para ope-rações de banco de dados e se não estâ contando com MS DTC para nenhum aplicativo,entáo pode colocar o recurso MS DTC no grupo do clusters e configurar sua dependênciade disco na unidade que tiver configurado como quórum. Essa confîguraçáo viola asmelhores ptáticas, mas se você precisa da unidade extra e se o MS DTC náo está tirandoproveito dela, entáo pode fazer essa alteração na configuração por motivos de funciona-lidade, sem afetar as operações do cluster.

CUIDADO Software antivírus

O software antivírus se tornou muito comum nos servidores de banco de dados. Em um am-biente de clusteç você precisa configurar a varredura do antivírus de modo que ela não interfiranas operaçöes de cluster. Você deve excluir da varredura o diretório MSCS e todos os diretóriosque contenham arquivos de dados. Durante um failoveç os discos são montados no nó emque um grupo está falhando, o que faz o software antivírus começar a examinar o disco. Se osoftware antivírus começar a examinar um arquivo de banco de dados antes que o SeL Serverpossa abri-lo, a recuperação do banco de dados será adiada até que o arquivo tenha sido com-pletamente examinado. Como os arquivos de banco de dados normalmente são muito grandes,o exame pode acrescentar uma quantidade de tempo considerável no processo de failover.

Configuração de redeCada nó dentro de um cluster do Windows precisa de peloconflguradas para comunicação pública e privada. A rede

menos duas placas de redepública é o ponto de acesso

Page 454: Livro_SQL

para todos os aplicativo s e fiâlego externo que solicitem dados do cluster. A rede internaé usada para loda comunicação entre nós e entre clusters.

O cluster do Windows rcaliza verificações de vitalidade periódicas, as quais determinamse um nó está disponÍvel e pode ser usado paÍa execular aplicativos. A verificaçáo de

vitalidade mais básica, que é chamada de teste de LooksAlive, é realizada pelo envio de

um pedido de ping de um nó do cluster paraoutto. Se um nó não responde a um teste de

LooksAlive, ele é considerado indisponível e o cluster executa um processo de failover.

Se a rede privada ficar saturada, um teste de LooksAlive tem a possibilidade de falhar e

caúsar um failover anormal. PaÍa evitar um failover anormal, você deve configurar as

redes públicas e privadas em sub-redes diferentes.

MEIHoRES pRÁrlcnS Conexão de rede privada

Você deve configurar os seguintes itens na conexão da rede privada:

I Desativar todos os serviços, exceto o TCPllP (Transmission Control Protocol/lnternet Pro'tocol).

I Remover o endereço de gateway padrão.

I Remover todos os endereços de servidor DNS.

I Desativar o registro de DNS.

I Desativar o NetBlOS sobre TCP/IP

I Desativar a pesquisa de LMHOSTS.

Essa configuração garante que a conexão de rede só possa processar tráfego TCPIP e que oendereço lP precise ser conhecido para ser utilizado.

Capítulo L4 r Cluster de Failover 453

NOTA Chamada de procedure remota (RPC)

Todas as verificaçöes de vitalidade dentro de um cluster usam o serviço RPC (chamada de pro-cedure remota). Se o serviço RPC estiver indisponível ou estiver desativado, todas as verifica-

çöes de vitalidade dentro de um cluster falharão. Você deve garantir que o serviço RPC esteja

ativado e configurado para iniciar automaticamente em todos os nós dentro de um cluster.

Recursos de clusterVocê pode separar recursos de cluster, que são os itens mais granulares que podem ser con-

figurados dentro de um cluster, nas categorias mais amplas mostradas naTabela 74-4.

Tabela 14-4 Recursos de cluster

lnterligação em rede

Hardware

Software

Endereço lP, nome da rede

Unidades de disco

Serviços, arquivos executáveis, compartilhamentos de arquivo,MS DTC

Page 455: Livro_SQL

454 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Os recursos que estáo fisicamente ligados a uma máquina não podem ser configuradosem um cluster; portanto, você pode estar se perguntando como as unidades de discopodem ser definidas como um recurso de cluster. Conforme descrito na seçáo "Configu-ração de disco", anteriormente nesta lição, todos os dados dentro de um cluster devemresidir em um conjunto de unidades externo. O conjunto de unidades externo pode serum gabinete de canal Fibre ligado em cada nó no cluster ou uma SAN conectada a todosos nós do cluster. Você náo pode configurur aunidade de disco rígido local de cada nócomo um recurso do cluster.

As unidades de disco fisicas dentro do conjunto de discos náo são os recursos do clusterreais. A definição de montagem de disco dentro do Windows é configurada e controladapelo cluster do Windows. Embora um recurso de disco seja definido em todos os nós,somente o nó que está configurado para possuir o recurso de disco tem os discos mon-tados e acessíveis. Todos os outros nós mantêm a definição de montagem de disco, masos discos ficam desmontados. Isso impede que mais de uma máquina grave na mesmamídia ao mesmo tempo.

O principal recurso configurado em um cluster é um serviço, como o SQL Server ou oSQL Server Agent. Embora cada nó do cluster tenha uma entrada para determinadoserviço, este é iniciado em apenas um nó dentro do cluster.

Um dos elementos mais poderosos dentro de um cluster é a maneira pela qual os endere-

ços IP e os nomes de rede são manipulados. Embora cada nó do cluster possua a defini-ção de endereço IP e nome de rede, somente o nó designado como proprietário do endere-

ço IP e do nome tem a definição vinculada a uma placa de rede fisica. Ouando ocorre umfailover em outro nó, o cluster executa as seguintes operações na pilha da rede:

1. Retira o registro do nome de rede do DNS

2. Vincula o endereço IP a uma placa de rede fisica no nó operacional

5. Yolta a registrar o nome de rede no DNS

Esse processo garaîte que todos os aplicativos mantenham o mesmo endereço IP enome de rede, independente do hardware em que estiverem sendo executados no mo-mento. Preservando o mesmo endereço IP e nome de rede em um failover, você náoprecisa reconfigurar os aplicativos para voltar a conectaÍ após um failover.

Grupos do clusterVocê usa grupos do cluster para combinar um ou mais recursos do cluster em uma es-trvfura de gerenciamento lógica. A unidade de failover dentro de um cluster é o grupo.Pode ser útil considerar um grupo do clusters como um aplicativo. Cada instância defailover cluster do SQL Server que você cria aparcce como um grupo separado dentro deum cluster do Windows.

Um grupo de clusters, junto com os recursos contidos no grupo, está mostrado na Fi-gara 14-2.

Page 456: Livro_SQL

! :''& eesourtefypti å"& Networki ! :--B roralnrea! i i-Ëpriu"t"i i l...Epubtr! l'@ ruetworklntelB-f NoDEI

: :'&Networklntertðres

E Êl NoDEI

ì l& nt¡iveeroupsi l-& tutive Reæurces

i i.^@l Networklnterfaces

E-€ NoDE2

i-{b Active Groups

!-@ active a*ourcesl& Networklntertôces

IP Address I (sQlclustl)

Server (SQLCLLJsTI)

server Ãqent (sQLCLLsTl)

Capítulo L4 r Cluster de Failover

*-öü,;onliæonliæonline

onlinê

NODEI NetwtrkNôme

Figura l4-2 Grupo do clusters e recursos de cluster associados.

ift"rt" rápido

455

1. Qual é a principal diferença entre cluster padráo e cluster de conjunto de nós

de maioria?

2. Quais sáo alguns exemplos de recursos de cluster?

5. De quantas conexões de rede um nó precisa para um cluster? Por quê?

4. Como funciona averifLcação de vitalidade dentro de um cluster do Windows?

5. Quais tipos de configurações de disco sáo suportados para cluster?

Respostas

1. Um cluster padrão usa um banco de dados de quórum compartilhado. Umcluster de conjunto de nós de maioria mantém um banco de dados de quórumseparado em cada nó, que é sincronizado entre todos os nós. A maioria dos

nós (mais de 50"/") deve estar online para que um cluster de conjunto de nós de

maioria funcione.

2. Os recursos de cluster podem ser hardware, software ou rede. Alguns exem-

plos sáo os endereços IB nomes de rede, montagens de disco e serviços doWindows.

Page 457: Livro_SQL

456 Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

Cada nô precisa de pelo menos duas conexões de rede: uma é, usada paracomunicação pública com aplicativos na rede e a outÍa conexão é usada paracomunicação interna privada dentro do cluster.

A verificação de vitalidade básica realizada é chamada de teste de LooksAlive.Esse teste consiste em cada nó enviando um pedido de ping para os outros.o cluster suporta discos básicos. Discos dinâmicos náo são suportados. osdiscos também devem ser externos a cada nó dentro do cluster, de modo queos discos montados de forma local dentro de um cluster não são visíveis páranenhum outro recurso dentro de um cluster.

4.

5.

PRÁT¡cA Criando um c¡uster do WindowsNeste exercício, você vai criar um cluster do windows, que vai usar na Lição 2, ,,proje-

tando instâncias de cluster de failover do SQL Server 2OO8' , para instalar uma instân-cia de cluster de failover do SeL Server.

1. Abra o site Virtual Server,\dministration.

2. lnicie o Virtual Machine Remote Control Client e conecte-se em sua instância deVirtual server.

3. Verifique se Nodel e Node2 estão desligados. Inicie a controladora de domínio (da-qui por diante referida como DC).

4. Sob a seção Virtual Disks do site Virtual Server Administration, escolha Create e, emseguida, Fixed Size Virtual Hard Disk.

5. Chame esse disco de euorum.vhd, com um tamanho de 500 MB.

6. Repita os passos 4 e 5 para criar mais dois discos: eqldata.vhd, com tamanho de1 GB, e Sqllog.vhd, com tamanho de 500 MB.

7. Dentïo do site Virtual Server Administration, clique em Edit Configuration para oprimeiro nó de seu cluster (daqui por diante referido como Nodel).

8' Verifique se você tem dois adaptadores de rede configurados. Se você não tiver doisadaptadores de rede configurados, adicione um segundo adaptad,or de rede.

9. Clique no link SCSI Adapters.

1o. Adicione três adaptadores scsl, com scsl Adapter ID configu rad.a como 6 e acaixa de seleção Share SCSI Bus For Clustering marcada, como mostrado na Ta-bela 14-6.

Tabela 14-5 Configuração do adaptador SCSI de Nodel_

Adaptador SCSI virtual 1

Adaptador SCSI virtual 2

Adaptador SCSI virtual 3

6 (Barramento SCSI compartilhado para cluster)

6 (Barramento SCSI compartilhado para cluster)

6 (Barramento SCSI compartilhado para cluster)

Page 458: Livro_SQL

tt.12.

Clique no link Hard Disks

Clique em Add Disk e, em seguida, adicione cada um dos discos Quorum.vhd, Sql-data.vhd e Sqllog.vhd. Vincule cada disco, conforme mostrado naTabela 14-6.

Tabela 14-6 Configuração de disco do cluster NodeL

Disco rígido virtual l- (Nome do disco da Canal principal (0)

máquina de base)

Disco rígido virtual 2 Quorum.vhd

Disco rígido virtual 3 Sqldata.vhd

Disco rí9ido virtual 4 Sqllog.vhd

1õ. Verifique se sua configuração corresponde à Tabela 1,4-6. Um exemplo está mostra-do na Figura 14-5.

Capítulo L4 r Cluster de Failover 457

SCSI 0 lD 0 (barramento compartilhado)

SCSI l- lD 0 (barramento compartilhado)

SCSI 2 lD 0 (barramento compartilhado)

Figura 14-3 Configuração de NodeL.

Clique no link Master Siatus sob Navigation.14.

15. Repita os passos 7 a 13 para o segundo nó de seu cluster (daqui por diante referidocomo Node2).

NOTA lD do adaptador SCSI para Node2

Cada nó deve usar uma lD de adaptador SCSI diferente. Como NodeL está configurado coma lD de adaptador SCSI 6 para cada adaptador SCSI, você deve configurar Node2 com a lD deadaptador SCSI 7 para cada nó.

Page 459: Livro_SQL

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

16. verifique se suas configurações correspondem às das tabelas 1.4-T e r4-8. um exem-plo está mostrado naFigwa 74-4.

Tabela 14-7 Configuração do adaptador SCSI de Node2

Adaptador SCSI virtual L

Adaptador SCSI virtual 2

Adaptador SCSI virtual 3

Tabela 14-8 Configuração de disco do cluster Node2

Disco rígido virtual L

7 (Barramento SCSI compartilhado para cluster)

Disco rígido virtual 2

7 (Barramento SCSI compartilhado para cluster)

Disco rígido virtual 3

7 (Barramento SCSI compartilhado para cluster)

Disco rígido virtual 4

(Nome do disco da Canal principal (0)

máquina de base)

Fl€ Edt ü.w FavdÞs ræb Hú

**

Quorum.vhd

Sqldata.vhd

Sqllog.vhd

SCSI 0 lD 0 (barramento compartilhado)

SCSI 1 lD 0 (barramento compartilhado)

SCSI 2 lD 0 (barramento compartilhado)

Figura 14-4 Configuração de Node2.

77:

18.

79-

Clique no link Master Status sob Navigation.

Mtudnñ*dÐÞr1 gnlì:dgq.pþy¡ti9:. : .: ..,. . .... . -. ùMÐd1(Mærddßs*00:ú+FsùiÆStudnèffi ad;DF2 ønrMbïmb'

Troque para o Virtual Machine Remote Control Client e conecte-se na DC.

Abra Active Directory Users And Computers.

.',- : Þe+; *r,e*¡;

Page 460: Livro_SQL

2O. Crie um novo usuário chamado Clusteradmin, que não seja membro de nenhumgrupo especial, como mostrado naFigua 74-5.

Capítulo 14 r Cluster de Failover

clustsadmin

Publisher! strur¡ty Grcup - DomÈin lo(èl Flembers of thB qroup åre,.,

Uær

s*ur¡ty Grcup - Domðln tocõl Mtrbers who h¿ve ôdmin¡.,,

Secuüy Grcup - Domäin LocÈl Member! who h¿ve viæ-,,,seÍurty 6rcup - Dffiain Locèl DNs AdmlnishåbE Group

Serurity Group - GlobBl DNs c[ents who ère permi, , .

security Group - Global Designðted ¿dm¡nisbBtors,.,

serurty Group - Global rqil worlstatbns ¡nd serve. , ,

SecurÈy Group - Globål All doma¡n controlleE ¡n 1h,.,

serurty Group - Global All domà¡n guelt!Serurity Group - Globðl All domå¡n users

secunty Group - Glob¿l DsÍqèted èdminishåtor5.,,

Serurity Group - Glob¿l Members ¡n lhjs group cil.,,Uss EuilL-in èc(ounl ffl quest .,.

Poliay Creãtor Owners

Figura 14-5 Conta de administrador de cluster.

CUIDADO Configuração inicial

É fundamental tomar muito cuidado com a ordem na qual você inicia e para Nodel- e Node2durante os passos subsequentes desta prática. Se você executar Nodel- e Node2 ao mesmotempo, antes de configurar o cluste[ corromperá os discos e não poderá completar os passos.Você deve verificar e conferir o estado de Nodel e Node2 antes de parar ou iniciar um ououtro.

459

seturity Group - Domain LoGl Group for the Help and 5u.,,

Security Group - Domåìn LoGl servers in this group rèn . , ,

Security Group - Glob.l Desi$aled èdm¡niskåtors.,,

Urer

se.urity GrÐup - Globðl

security Group - Globð¡

SecuritÏ Group - Globål

User This is ð vendor's âccount ,..

seÈurity Group - Dom¿¡n Local Members of lhis group hå,,.

21. Verifique se Node2 está desligado e, então, inicie Node1.

22. Após conectar-se em Node1, abrao Gerenciamento de disco, clicando com o botãodireito do mouse em Meu Computador no menu Iniciar e escolhendo Gerenciar. Naâwore do console Gerenciamento do computador, selecione Gerenciamento de disco.

23. Como você tem três discos não configurados,verâ o Assistenæ paralnicializaçáo e

Conversão de Disco.

24. Clique em Avançar, verifique se todos os três discos estão selecionados e clique emAvançar.

25. Yerifr,que se todos os três discos não estão selecionados (porque discos dinâmicos sãoincompatíveis com cluster), clique em Avançar e, em seguida, clique em Concluir.

Page 461: Livro_SQL

460 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

CUIDADO Discos básicos

Siga os avisos da caixa de diálogo para configurar os discos. Tenha certeza absoluta de nãoconverter os discos para dinâmicos. O cluster aceita somente discos básicos; se você converteros discos para dinâmicos, não poderá configurar seu cluster e precisará começar de novo comnovos discos.

26. Para cada disco, crie uma nova partição NTFS que seja uma partiçáo primáLriaabrangendo o disco inteiro e que mostre seu espaço como não alocado.

27. configare as letras de unidade de acordo com a Tabela l4-9, como mostrado naFigura 14-6.

Tabela 14-9 Configuração de disco deNodel

Disco 0

Disco 1

Disco 2

Disco 3

aM

!! Compuler Hðnàgenent (LocåU

El & sFtem lools

: E-ttsl Evenr v¡ewer

: E-lF shðredFolders

i E fü LocalUsersanderoups

: E {*g PerFormèn(e Logs and I

i :'-9 DeviceHanêqer

aS storaqe

i E-#Removablestoraqe: ;'-Eoiskoetragm"nt.ri--ëEffi¡ffi

É-ES Servi¿es ènd Applications

Figura 14-6 Configuração de disco de Node1.

Page 462: Livro_SQL

28. No console Gerenciamento do computador, expanda o nó Usuários e grupos locaise selecione Grupos.

29. Clique duas vezes no grupo Administradores e adicione a conta Clusteradmin que

30.

31.

32.

35.

34.

35.

você criou dentro de seu domínio no passo 20.

Feche o console Gerenciamento do computador.

Abra Network Connections.

Mude o nome de Local Area Connection para Public.

Mude o nome de Local Area Connection 2 para Private.

Clique com obotão direito do mouse na conexão Private e escolha Properties.

Desmarque as caixas de seleçáo Client For Microsoft Networks e File And PrinterSharing For Microsoft Networks, como mostrado naFigtra 14-7.

Capítulo 14 r Cluster de Failover 461

Figura L4-7 Propriedades do adaptador de rede Private.

36. Selecione Internet Protocol (TCP/IP) e clique em Properties.

57. Especifique 70.1.0.21.3.1 com amáscara de sub-rede 255.255.255.0. Não configureum gateway padrão nem servidor DNS, como mostrado na Figura 14-8.

ã8. Clique em Advanced.

59. Selecione a guia DNS e desmarque a caixa de seleçáo Register This Connection s

Addresses In DNS, como mostrado naFigura 14-9.

Page 463: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Miøosoft SQL Server 2008

Figura 14-8 Configuraçöes de lP e DNS da rede Private.

Figura 14-9 Configuração de DNS da rede Private.

Page 464: Livro_SQL

i

I

40. Selecione a guia WINS, desmarque acaixa de seleçáo Enable LMHOSTS Lookup e, em

seguida, selecione Disable NeIBIOS Over TCP/IB como mostrado na Figura 74-1.0.

Capítulo 14 r Cluster de Failover

Figura 14-10 Configuração de WINS da rede Private.

41. Clique em oK duas vezes e, em seguida, clique em Fechar para fechar a caixa de

diálogo Private Properties.

42. Feche Network Connections e encerre Node1.

43. Yerifique se Nodel está desligado e, em seguida, inicie Node2.

44. Repifa os passos 21 a 42 para Node2. Consulte as tabelas 74-10 e 74-11. pata a

configuração de disco e rede de Node2.

463

NoTA lnicialização de disco

Quando você seleciona Gerenciamento de disco em Node2, o Assistente para lnicialização e

Conversão de Disco não aparece porque os discosjá têm uma assinatura gravada. Você nãoprecisa formatar os discos, porque já executou esse passo quando configurou Nodel.. Você

também não precisa especificar letras de unidade, porque Node2 as recupera do cluste[ de-pois de configurado.

Page 465: Livro_SQL

464 Kit de Treinamento MCTS (Exame70-432): Microsoft SeL Server 2008

Tabela 14-10 Configuração de discode Node2

Disco 0

Disco 1

Disco 2

Disco 3

Tabela 14-11 Configuração de rede de Node2

aM

Client For Microsoft Networks

File And Printer Sharing For Microsoft Networks

tf Add¡qs9

Subnet Mask

Default Gateway

DNS

Register This Connection's Addresses ln DNS

Enable LMHOSTS Lookup

Disable NETBIOS Over TCPllP

45. Yefifique se Nodel e Node 2 estã,o ambos desligados e, em seguida, inicie Node1.

46. Conecte-se em Nodel e inicie o ClusterAdministrator.

47. Na lista suspensa Action, escolha Create New Cluster e clique em OK.

48. No New server cluster ',Ì{tzard, clique em Avançar, verifique se o nome de seu do-mínio está especificado corretamente na lista suspensa Domain e digite Clustl emCluster Name. Clique em Avançar.

49. Nodel deve ser especificado por padráo para computer Name. clique em Avançar.

50. Agora o assistente analisa Nodel paraverificar se é compatívelparacluster. euan-do a análise terminar e aparecer umabarraverde, clique em Avançar.

51. Digite um endereço lP para o cluster no thread Public. Com base nas configuraçõesde endereço IP sugeridas, especificadas no início deste capítulo, configure o endere-ço IP como 10.1.1.5. Clique em Avançar.

52. Digite clusteradmin em user Name, digite a senha que você usou para essaconÍ.a, verifique se o nome do domínio está especificado corcetamente e clique emAvançar.

53. Na página Proposed Cluster Configuration, clique em Quorum e certifique-se de queDisk Q esteja especificado para o quórum. Se não estiver, altere a enírad,a e cliqueem OK.

Desativado

Desativado

L0.10.213.2

255.25s.255.0

Em branco

Em branco

Desativado

Desativado

Selecionado

Page 466: Livro_SQL

NOTA Especificando um quórum

Quando você configura um cluster em hardware físico, o disco que o New Server Cluster Wi-zard seleciona como quórum por padrão é o primeiro disco adicionado em Nodel que nãoseja um disco vinculado de forma local. O Virtual Server seleciona a primeira letra de unidadeem ordem alfabética. Você pode usar a caixa de diálogo Cluster Configuration Quorum paraespecificar um quórum local para utilizar na construção de um único cluster de nós para teste.Também é nessa caixa de diálogo que você pode mudar o tipo do cluster que está construin-do, do padrão para um cluster de conjunto de nós de maioria, escolhendo Majority Node Setna lista suspensa. Se você escolher Majoríty Node Set nessa lista suspensa, o New Server Clus-ter Wizard criará um banco de dados de quórum em cada nó do cluster.

54. Verifique se todas as configurações estão corretas e clique em Avançar.

55. o próximo passo no processo demora alguns minutos, enquanto o cluster é cons-truído de acordo com suas especificações. Quando esse processo terminar, cliqueem Avançar e,,em seguida, clique em Co-ncluir.

-56. Parabéns - você criou um cluster do Windows!

57. Yeriflque se você criou três grupos: Cluster Group contém Cluster Name, Cluster IPAddress e Disk Q; croup 0 contém Disk M; e Group 1 contém Disk N.

58. Com Nodel em execução, inicie Node2.

59. Em ClusterAdministrator de Node1, clique com o botáo direito do mouse em Clustl,escolha New e, em seguida, Node. Clique em Avançar quando o Add Nodes Wizardcomeçar.

60. Especifique Node2 como nome de computador, clique em Adicionar e, em seguida,clique em Avançar.

61 . Depois que a análise terminar, clique em Avançar.

62. Digite a senha da conta Clusteradmin e, em seguida, clique em Avançar.

63. Verifique os ajustes da confrguração do cluster e clique em Avançar.

64. Agora Node2 está configurado para cluster e adicionado em Clustl.

65. Clique em Avançar e, em seguida, clique em Concluir.

Capítulo L4 r Cluster de Failover 465

NOTA Avisos da análise de cluster

Por causa do modo como o Virtual Server manipula recursos de disco internamente, vocêpoderá receber alguns avisos quando um cluster for configurado. lsso é normal e não afeta ofuncionamento de seu cluster. Desde que não receba um erro (a barra de progresso fica ver-melha), sua configuração foi bem-sucedida e você tem um cluster totalmente funcional.

66. Verifique se agora você vê Nodel e Node2 configurados como parte de Clustl.

67. Selecione o grupo Cluster Group. No painel de detalhes, clique com obotáo direitodo mouse em Cluster Name e escolha Take Offline. Clique com o botão direito domouse em Cluster IP Address e escolha Take Offline.

68. No menu File, escolha New e, em seguida, Resource.

Page 467: Livro_SQL

466 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

69. Especifique o nome MSDTC, selecione Distributed Transaction Coordinator paraResource Type e verifique se Cluster Group está selecionado para o grupo. Clique em

Avançar.

70. Verifique se Nodel e Node2 estão ambos especificados como Possible Owners e cli-que em Avançar.

71. Adicione Cluster Name e Disk Q em Resource Dependencies. Clique em Concluir.Clique em OK para lechar a caixa de mensagem confirmando a criação do recursode cluster.

72. Clique com o botão direito do mouse em Cluster Group e escolha Bring Online. De-

pois que o recurso estiver online, sua tela deverâ ser semelhante à Figura 14-11.

'EeT;;*ii..8ffiüfi i ã.;.¡"¡ifi aesourcsE{È clù*ercóñftg ðuon

i:-gR.surc.ryÞi ó& ru"uo*i i i--Eåro-r¡econnea¡i i ;-ãp**"' : l-qå uki |,m Newk¡nBfæsE.€ rcDEri l-û ftbveGrcuFi !'lð mvec¿ørcesj i.& uworkrùfæB€ NøE2

i-1Èmee@|&æe*or*l-& Networkh6fä6

ôclu*orFÁddr6' odboclu4erk onlÞgDj*ar - onlÞ

NOE'N@Et

Figura 14-11 Cluster de dois nós concluído.

MELHoRES pRÁTlcAs MS DTC (Microsoft Distributed Transaction Coordinator)

O MS DTC, que você precisa adicionar em cada cluster do Windows que construiç garante queas operaçöes que exigem o alistamento de recursos, como COM+, possam funcionar em umcluster. É recomendado que você sempre configure o MS DTC para usar um disco que não seja

o disco de quórum ou qualquer outro utilizado pelo SQL Server ou por outros aplicativos. Demodo geral, achamos que isso é um desperdício de recursos de disco muito limitados. Se vocêestiver executando aplicativos em um cluster que faz uso muito pesado de MS DTC, precisará

dedicar um disco para as operações de MS DTC. Se não estiver executando aplicativos queexigem COM+, você pode configurar o MS DTC dentro do grupo de clusters com segurança econfigurar suas dependências na unidade de quórum.

Resumo da liçãor Você constrói um cluster padráo usando um único banco de dados de quórum ar-

mazenado em um conjunto de discos compartilhado. Você constrói um cluster de

conjunto de nós de maioria com uma cópia do banco de dados de quórum em todosos nós dentro do cluster.

Page 468: Livro_SQL

O cluster do Windows aceita somente discos básicos. Você pode uiptografar discos,mas as funções de criptografia/descriptografr,a afetam o desempenho. O cluster nãoaceita compactaçáo de disco.

Um clusterprecisa de duas redes separadas. O clusterusa a rede pública para se

comunicar com aplicativos e clientes e a rede privada para comunicação interna.

Revisão da liçãoResponda as perguntas a seguir para lestar seu conhecimento sobre a Lição 1. As per-guntas tambêm estáo disponíveis no CD do livro (em inglês) se você preferir revisálasem formato eletrônico.

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" nofinal do livro.

Capítulo 14 r Cluster de Failover

1. Recentemente, a Coho Vineyard teve problemas em seu sistema de distribuiçáo.,\trasos na programação de caminhões e nas remessaspara os fornecedores foramcausados por uma série de falhas de hardware. A gerência autorizou o superinten-dente de tecnologia (CTO) a adquirir uma solução de hardware capaz de resistir àfalha de um servidor inteiro. Será adquirido hardware compatível com cluster. Quesistema operacional você deve instalar para satisfazer esses requisitos empresariaiscom custo mínimo?

A. Windows 2000 Server edição Standard

B. Windows 2000 Advanced Server

C. Windows Server 2003 ediçáo Standard

D. Windows Server 2003 edição Enterprise

O CTO da Coho Vineyard decidiu comprar dois servidores para cluster, que seráo usa-dos para executar o sistema de distribuição. Que combinaçáo de versáo de sistemaoperacional e tipo de cluster oferece a maior tolerância à falha pelo menor custo?

A. Windows Server 2003 ediçáo Standard com um cluster padrã,o

B. Windows Server 2003 edição Standard com um cluster de conjunto de nós de

maioria

C. Windows Server 2003 edição Enterprise com um cluster padrão

D. Windows Server 2003 edição Enterprise com um cluster de conjunto de nós de

maioria

Que serviço precisa estar em execução para que verificações de vitalidade sejamrcalizadas dentro de um cluster?

A. Serviço Server

B. Serviço RPC

C. Serviço Net Logon

D. Serviço Terminal Services

2.

3.

Page 469: Livro_SQL

468

Lição 2: Projetando instâncias em cluster

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

de failover do SQL Server 2008Depois de construir e configurar o cluster do Windows, você pode instalar instânciasdo SQL Server no cluster. As instâncias em cluster oferecem tolerância à falha para oSQL Server, garantindo que uma falha de hardware náo possa causar uma paralisaçáoprolongada dos aplicativos. Esta lição explica como se instala e configura instâncias decluster no SQL Server 2008 pan obter a melhor tolerância em um cluster.

Após esta lição, você será capaz de:

I lnstalar uma instância em cluster do SQL Server

Tempo estimado para a lição:45 minutos

@ ruunOo real

Míchael ¡toteþ

Há pouco mais de dois anos, eu estava nas instalações de um cliente para ajudara implementar um cluster. Emvez de começar com a instalaçáo e configuração docluster, tive que retroceder e explicar o cluster. Algum consultor disse aos funcio-nários dessa empresa que o cluster poderia ser usado para eliminar o tempo deparalisaçáo quando pacotes de serviço fossem instalados e lhes permitiria equili-brar a carga de seus recursos de hardware. Eles também foram informados de queo cluster poderia permitir que uma transaçáo iniciada em um nó fosse concluídaapós uma falha do cluster.

O cluster náo tem capacidade de fazer isso. O failover cluster do SQL Server ofereceproteção contra falhas de hardware. Em caso de falha de um componente de hard-ware, um segundo componente de hardware assume o controle automaticamentee inicia o SQL Server.

os pacotes de serviço ainda causam uma paralisação em um cluster, pois a instân-cia do SQL Server só pode existir em um nó por vez. Todas as transações que náoforam concluídas quando um cluster falha são revertidas. como o SeL server náopermite que vários processos acessem arquivos de banco de dados simultanea-mente, o equilíbrio da carga é impossível.

Depois de explicar que o cluster só protege contra falhas de hardware, eu aindaimplementei o cluster dentro do ambiente do cliente. o cliente podia gerenciarefetivamente o banco de dados dentro do cluster, entendendo que as falhas aindaacarretañam paralisações, mas que o tempo de interrupção devido à falha dehard-ware seria mínimo.

Page 470: Livro_SQL

TerminologiaAs instâncias do SQL Server instaladas em um cluster são referidas por várias termi-nologias diferentes, muitas das quais imprecisas. Assim, antes de explicarmos a con-figuração do SQL Server dentro de um cluster, trataremos de todos os problemas de

terminologia.

No SQL Server, os clusters são de uma ou devâúas instâncias. Um cluster de uma ins-tância é um cluster do Windows que tem exatamente uma instância do SQL Server ins-talada. Um cluster de várias instâncias é um cluster do Windows que tem mais de umainstância do SQL Server instalada. Não importa em qual nó você configure as instânciaspara executar; a terminologia permanece a mesma.

No Windows, existem clusters Ativo/Ativo e Ativo/Passivo. Um cluster Ativo/Ativo indicaque os aplicativos são executados em todos os nós de um cluster. Um cluster AlivolPas-sivo indica que os aplicativos são executados em apenas um nó do cluster. No que dizrespeito ao SQL Server isso é irrelevante, pois ou o SQL Server está em execuçáo ou não- "está.

As-instânciaTdo SQI server nãõ sabãm-da ex*ßtênclã de nenhumã outrã-iñltâñciado SQL Server. O SQL Server náo pode ter equilíbrio de carga. Assim, o SQL Server está

sendo executado em um dos nós; o nó em que o SQL Server está sendo executado ficapor conta do administrador de banco de dados (DBA) que gerencia o cluster.

As instâncias do SQL Server instaladas em um cluster costumavam ser referidas comoservidores virtuais. Essa terminologia gerou um problema fundamental, pois a Micro-soft tem um produto independente chamado Virtual Server (servidor virtual). As ins-tâncias do SQL Server em um cluster são referidas como instâncias em cluster do SQL

Server ou instâncias em cluster de failover do SQL Server.

Componentes da instância do cluster de failoverAo instalar uma instância independente, os DB^As não estão preocupados com endereços If;nomes de rede ou mesmo com a presença de unidades de disco. Ao se instalar uma instân-cia do SQL Server em um cluster, cada um desses componentes precisa ser considerado.

Os componentes que você precisa configurar para uma instância em cluster de failoverdo SQL Server são os seguintes:

I Endereços IP

I Nomes de rede

r Unidades de disco no conjunto de unidades compartilhado

r Serviços do SQL Server

I Contas de serviço

Capítulo L4 I Cluster de Failover 469

Configuração de redeCada instância do SQL Server instalada em um cluster exige um endereço IP exclusivo,o qual precisa estar no thread da rede pública configurado no cluster. A cada endereçoIP está vinculado um nome de rede exclusivo que é registrado no DNS para que o SQL

Server possa ser determinado pelo nome.

Page 471: Livro_SQL

470 Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

MELHORES pRÁnCAS Serviço SeL Browser

O SQL Server 2008 instala um serviço chamado SQL Browser. Se você tiver instalado instânciasnomeadas em um clusten o serviço SQL Browser deverá estar em execução para determinaresses nomes. Se você não tem instâncias nomeadas, deve desativar o serviço SQL Browser.

Configuração de discoVocê deve configurar cada instância em cluster do SQL Server com um conjunto deletras de unidade exclusivo. Em um servidor independente, várias instâncias podemaÍmazenar bancos de dados na mesma unidade ou alé, no mesmo diretório debutrasinstâncias. Em um cluster, as unidades sáo montadas em um nó específico em dadomomento. Nenhum outro nó tem acesso a essas unidades. Você pode configurar umainstância do SQL Server para executar em qualquer nó. Se você pudesse configurar maisde uma instância em cluster do SQL Server para aÍmazenar bancos de dados na mesmaTetta de unidade, seria possível criar uma configuraçã.o na qual a instância estivesse

-sends exe-euúada em um né, enquanto-ou-Éro né tivesse-a posse dos discos; tornando

com isso a instância do SQL Server inoperante.

O conceito de configurações de disco em um cluster do SQL Server é conhecido como re-laçáo instância-disco. Embora uma instância de cluster do SeL Server possa endereçarmais de uma letra de unidade, uma letra de unidade só pode estar assoclada a uma iñs-tãncia de cluster do SQL Server. Além disso, uma letra de unidade deve ser configuradacomo uma dependência do serviço SQL Server que pode aÍmazenat bancos de daãos.

Configuração de segurançaVocê precisa configurar cada serviço do SQL Server com uma conta de serviço. Geral-mente, você deve usar uma conta diferente para cada serviço do SQL Server - como osserviços SQL Server, SQL ServerAgent e Full Text.

Embora as contas não precisem de quaisquer privilégios especiais, elas devem ser con-tas de domínio, pois o identificador de segurança (SID) de uma conta local não pode serdeterminado em outra máquina.

O SQL Server 2008 nã,o exige contas de serviço com autoridade administrativa no Win-dows. Isso criou uma situaçáo na qual uma conta do Windows poderia tet dezenas depermissões individuais garantidas, como permissões de acesso ao Registro, acesso a di-retório e acesso a arquivo. Alterar contas de serviço se tornaria muito complicado, poisvocê teria que atribuir todas essas permissões individuais à nova conta de serviço pal¿garantft que os serviços continuassem a funcionar normalmente.

Com a mudança na infraestrutura de segurança, as contas do Windows para serviçosdo SQL Server2008 são projetadas para seguir aspráticas aceitas pelo ietor parage-renciamento dessas contas. Os grupos do Windows recebem permissões para oì váriosrecursos que serão acessados. Entáo, as contas do Windows sáo adicionadas em seusrespectivos grupos pan obíer acesso aos recursos.

Em uma máquina independente, esses grupos são criados por padrão na for-ma sQLServerMSSQLUserg <nome da mtiquína>g<nome da ínstâncía> esQlServersQlAgentuserg <nome da mtiquína>g<nome da ínstâncía>. A configura-

Page 472: Livro_SQL

ção do SQL Server atribui automaticamente permissões nos diretórios, chaves do Re-

gistro e outros recursos necessários para permitir que o SQL Server funcione no grupo

apropriado. Então, ela adiciona a conta de serviço no grupo respectivo.

Embora esse processo funcione em uma máquina independente, ele náo é táo simples em

um cluster. Dentro do cluster, uma instância de failover cluster do SQL Server pode estar

sendo executada em qualquer máquina ffsica do cluster. os grupos locais do Windowsnão têm um contexto de segurança válido para todas as máquinas. Portanto, os grupos

das contas de serviço do SQL Server precisam ser criados em nível de domínio.

A rotina de instalação não presume que você tenha autoridade paru ctiar grupos no

domínio. Você precisa criar esses grupos de domínio antes de instalar uma instância de

failover cluster do SQL Server. Você precisa definir dentro do domínio três grupos, que

têm os seguintes propósitos:

r Contas de serviço do SQL Server

r Contas de serviço do SQL ServerAgent

I Contas do Full Text Search Daemon do SQL Server

Você especifica os grupos que vai criar durante os estágios finais da rotina de instalaçáo.

Capítulo L4 r Cluster de Failover

MELHoREs PRÁTlcAs Contrabalançando segurança com capacidade degerenciamento

As melhores práticas de segurança criariam um grupo em nível de domínio para cada tipo de

serviço e para cada instância em cluster do SQL Server instalada. A simplicidade do gerenciamen-

to criaria um grupo em nível de domínio para cada um dos três serviços e todas as instâncias de

failover cluster do SQL Server especificariam os mesmos grupos de domínio. Você precisa deter-minar onde vai contrabalançar um esquema de grupo de domínio muito seguro (mas altamentecomplexo) com um esquema de grupo de domínio menos complexo (mas menos seguro)'

Verificações de vitalidadeo cluster rcaliza duas verificações de vitalidade (health checks) em uma instância de

failover cluster do SQL Server. A primeira verificaçáo realizada é o teste de LooksAlive,que é um pedido de ping de cada nó do clustet para o endereço IP da instância do SQL

Server. Contudo, um teste de ping náo indica que uma instância está disponível - a

instância poderia responder a um pedido de ping, mas ainda estar inacessível.

Para detectar problemas de disponibilidade causados porque o SQL Server está indisponível,

é rcalizada uma segunda verificação: o teste IsAlive. O teste IsAlive estabelece uma conexáo

com a instância do SQL Server e executa SELECT @@SERVERNAME. O SgL Server deve

retornar um conjunto de resultados váÃido para passar nessa verificação de vitalidade.

Cluster de failoverSe uma ou outra verificação de vitalidade faThar, o cluster iniciarâ um failover da ins-tância do SQL Server.

O primeiro passo no processo de failover é reiniciar o SQL Server no mesmo nó. A ins-tância é reiniciada no mesmo nó porque, primeiramente, o cluster presume que um erro

temporário causou a falha daverificaçáo de vitalidade.

Page 473: Livro_SQL

472 Kit de Treinamento MCTS (Exame70-432): Microsoft SeL Server 200g

Se o reinício não responder imediatamente, o grupo do SQL Server uliliza outro nó docluster (o nó secund ârio). o registro do nome de rede do servidor que está executand.o oSQL Server é tetirado do DNS. O endereço IP do SOL Server é vinculado à placa de inter-face de rede (NIC) do nó secundário. Os discos associados à instância do SQL Server sáomontados no nó secundário. Após o endereço IP ser vinculado à NIC do nó secundário,o nome de rede da instância do sel server é registrado no DNS. Depois que o nome derede e os discos estão online, o serviço do SQL Server é iniciado. Depois que o serviço dosQL Server é iniciado, o SQL serverAgent e a indexaçáo de Full Text são iniciados.

Independente de a instância ser reiniciada no mesmo nó ou em um nó secundário, ainstância do SQL Server é encenada e reiniciada. Todas as transações não concluídasquando o processo de failover é iniciado são revertidas quando o SeL Server reinicia. Noreinício, é seguido o processo normal de recuperação de reinici alizaçã,o.

Em geral, um cluster terâfailover dentro de 10 a 15 segundos. O tempo de failover podeser afetado pelo registro no DNS e também pode aumentat, caso um grande número debancos de dados estejam configurados na instância. No sel server 2000, o tempo defailover estava ligado à quantidade de tempo necessária para as fases de refazer e desfa-zet tetminarem, o que deixava o tempo de failover à mercê dos aplicativos que estavamexecutando transações nos bancos de dados. Como agora os bancos de dados estão dispo-níveis assim que a fase de rcfazer termina, uma instância em cluster do SoL server zóogtem o failover feito e os bancos de dados ficam disponíveis muito mais rapidamente.

t't"rt" rápido

1. Que tipos de contas e grupos do windows você pode usar em uma instânciade cluster do SQL Server?

2. com quantas instâncias em cluster uma única letra de unidade pode ser usada?õ. Quais são as duas verificações de vitalidade rcalizadas em um cluster e quais

operações são executadas?

Respostas

1. usuários de domínio e grupos de domínio devem ser usados com instânciasde failover cluster do sel Server. o sID das contas e grupos usados deve serdeterminado em todos os nós do cluster. o sID de uma conta ou grupo localnáo pode ser determinado entre as máquinas.

2. Embora uma instância em cluster possa endereçar vârias letras de unidade,você pode configurar determinada letra de unidade para apenas uma instân,cia. Essa configuraçáo evita a possibilidade de se ter o SeL server executandoem um nó, enquanto um nó diferente tem a posse dos recursos de disco neces-sários para a instância em cluster.

ã. A verificação LooksAlive é executa da a cada 5 segundos por padrãto e raz umpedido de ping de todos os nós pan o endereço Ip da instância em cluster dosQL server. A verificação IsAIive é executada a cada 60 segundos por paùã,o,conecta-se na instância em cluster do sQL server, executa

'ELECT @@sER-

VERNAIIE e deve receber um conjunto de resultados válido.

Page 474: Livro_SQL

PRÁTlcA lnstalando uma instância em failover cluster do SQL Server

Neste exercício, você vai instalar uma instância de failover cluster do SQL Server nocluster do Windows criado na prática daLição 1..

NOTA Pré-requisitos

Você já deve ter instalado o.NET Framework 2.0 SP1 nos dois nós do cluste[ antes de pros-seguir com esta prática. Se estiver configurando um cluster do Windows Server 2003, vocêtambém precisará baixar e instalar a hotfix K8937444.

7.

2.

Abra o Cluster Administrator e conecte-se em Clustl.

Clique com o botáo direito do mouse em Group 0 e mude seu nome para Temp.

IMPORTANTE Especificação de grupo de cluster

Ao contrário das três versöes anteriores do SQL Serveri a rotina de instalação do SQL Server2008 não permite especificar um grupo de clusters já existente para instalarserviços, mesmoque o grupo especificado não contenha uma instância do SQL Server. Assim, para contornaresse problema, certifique-se de não ter um grupo já criado com o mesmo nome que vocêdeseja quando a instalação terminar.

Capítulo 14 r Cluster de Failover

3. Selecione o grupo Group 1; affaste e solte o disco do grupo Group 0 no grupo Temp.

Quando solicitado, clique em Sim duas vezesparc confirmar esse movimento.

Verifique se o grupo Temp contém tanto Disk M como Disk N.

Clique com o botão direito do mouse em Group 1 e selecione Excluir. Clique em Simpara confirmar a exclusão. Verifique se o grupo Temp contém Disk M e Disk N, comomostrado na Figura 14-12.

Troque para aDC.

Abra Active Directory Users And Computers.

Crie três grupos de segurança globais: Sglserverservice, SQlServerAgentservi-ce e SQlServerFullTextService.

Crie uma conta de usuário chamada SQLAdmin, como mostrado na Figura 14-13.Crie também uma conta chamada SQlServerFullText.

Adicione a conta SQLAdmin nos grupos SQlserverservice e SQlServerAgentservi-ce. Adicione a conta SQlServerFullText no grupo SQlServerFullTextService.

Volte para Nodel e inicie a instalação do SQL Server.

Aceite o contrato de licença de usuário frnal e clique em Avançar.

Clique em Instalar para instalar os pré-requisitos de instalaçáo. Quando a instala-

ção terminar, clique em Avançar.

Clique no link Installation e, em seguida, clique no link New SQL Server FailoverCluster installation no SOL Server Installation Center.

4.

5.

6.

7.

8.

9.

10.

17.

72.

13.

14.

Page 475: Livro_SQL

474 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Nr ù!re NODEI PtrysiGlDirkMr ùlire NODEI PhÞicål Dsk

FiguraL4-12 Configuração inicial de grupo de cluster.

Publ¡+¡ss securilyGroq-hmðinbGl Hsmb€rsolthtsqrupðre,..erðdmh UGèr

Adminilhðtors Secuftycroup-Dom¡hlocål Merìberiwhoh¡vedddd,.,U*r! s*urtycrcup-DomåinLocèl ftñbeEwhoh¡vevi#-,,,lmiE Strurlty Group - Domðin Local DNs AdminÈhãtoE GroW

d¿þProxy ftflrily Group - Globàl m5 clienb who ara permi,.,

nAdmhs searilycoup-Globðl tu!¡SabdådminÈkatoE.,.n Computer5 secur¡ty GroS - Globðl AIl workt¡tim5 ãnd !erue,.,n CdrdeE SecuÉty Græp - Globðl Alldomôin conbolbrr in t¡ì,,.n6ufft' secuüy6rcup-Glob¿l Alldomðinsestsnßers secuÍtycrcuD-Globèl Alldomdnurtrs

HAðdmin Uler tu¡lt-in accoud lff ðdmtni,.,

HelÞServicelcrcup secudtycrilp-DomðinLocðl GrcupForthetrlpånd5!,,,

Pdiry Creå& OwneE Sarily Group - Globðl Membqs h thls grcup cðn.,.Uler EuilÞinðccountforquffL,,,

Addns se(üitf GrouÞ - GlobBl æ5igßtel ådmhbbators.,,

Ànd IÆ seryers secuÍty GrouÞ - Domãin Local serærs in thG Eoup (ðn , . ,

ma Admins Secudy 6roup - Globål Dsigmted ädmhilbators.,,

Figura 14-13 Grupos e usuários de domínio.

_ffi945ðû User This ¡s è vendor'r account . , ,

nts secuftycroup-Domåinlocðl HembaEofthbgroqhð,.,

Page 476: Livro_SQL

15.

16.

17.

18.

Depois que as regras de Setup forem executadas, clique em OK.

Na página Setup Support Files, clique em Instalar para instalar os arquivos de su-porte.

Depois que a System Configuration Check terminar, clique em Avançar.

Na página Product Key, digite sua chave de produto ou escolha SpeciSz A Free Edi-tion. Clique em Avançar.

Na página License Terms, marque a caixa de seleção I Accept The License Terms.Clique em Avançar.

Marque as caixa de seleçáo SQL Server Database Services e SQL Server Replication.Clique em Avançar.

Na página Instance Configuration, especifique SQLClustl como SQL Server FailoverCluster Network Name, assim como para Instance Name e Instance ID, como mos-lrado na Figura 14-14. Clique em Avançar.

t9-

20-

21.

Capítulo 14 r Cluster de Failover

Figura14-14 Especificando o nome do cluster.

22.

23.

Verifique os requisitos de espaço em disco. Clique em Avançar.

Especifique SQLClustl para SQL Server cluster resource group name e cliqueAvançar, como mostrado na Figura 14-15.

Selecione Disk M e Disk N na página Cluster Disk Selection, como mostrado nagara 14-16. Clique em Avançar.

24.

em

Fi-

Page 477: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

Figura 14-15 Especificando o grupo de recursos do cluster.

Figura 14-16 Selecionando o disco do cluster.

:l '.r I

' .::,:rli:r1f-,¡ì;;

Page 478: Livro_SQL

25. Marqueacaixa de seleçáo IPv4 e especifique 10.1.1.6para o endereço IP Clique em

Avançar, como mostrado na Figura 14-17.

Capítulo L4 r Cluster de Failover

Êigura L4-L7 Selecionando a rede do cluster.

26. Na página Cluster Security Policy, especifique SQlServerService paraDatabase En-gine domain group e SQlserverAgentservice para SQL Server Agent domain groupe, em seguida, clique em Avançar, como mostrado na Figura 14-18.

r¡a:1,!:ri.'

477

Figura 14-18 Plano de segurança do cluster.

Page 479: Livro_SQL

478 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

27. Especifique as contas de serviço para os serviços sel serverAgent, sQL server Da-tabase Engine e Full Text search Daemon, junto com suas senhas, como mostradona Figura 14-19, e clique em Avançar.

Figura 14-19 Especificando contas de serviço.

CUIDADO Inicialização de serviço

O tipo de inicialização para os serviços agrupados do SQL Server deve ser Manual. O clusterdo Windows precisa ter controle sobre os serviços. Se você mudar o tipo de inicialização paraAutomatic, causará erros nas operaçöes de cluster.

28. Selecione Mixed Mode (SQL Server Authentication And Windows Authentication) e

clique em Add Current User, como mostrado na Figura 14-20.

Clique na guia Data Directories e mude a localizaçã,o dos arquivos de log para aunidade N:, coûto mostrado na Figura 74,2I. Clique em Avançar.

Marque as caixas de seleção na pâgina Error And usage Reporting, se quiser enviarrelatórios de erro e dados de utílizaçáo paÍa a Microsoft. Clique em Avançar.

Examine apâgina cluster Installation Rules. clique em show Details, se quiser veras regras de instalação e o sfatus de sua configuração. Clique em Avançar.

Examine a confrguraçã,o na pâgina Ready To Install e clique em Instalar.

Ao terminar a instalaçáo, clique em Fechar.

29.

30.

31.

32.

33.

Page 480: Livro_SQL

Capítulo L4 r Cluster de Failover 479

Figura 14-2O Especificando o modo de autenticação.

tigura L4-2L Especif ica ndo d i retórios de dados.

Page 481: Livro_SQL

480 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

34. observe os recursos que agora estáo configurados no grupo selClustl dentro deClusterAdministrator, como mostrado na Figura 14-22.

I{lls,l-o*llg|ìç.{s-Rlçl!l$ll._._o,!ijF_._'-'-'-'.'.'-NoDE1 NetMrkN¿reM: onüne i;òml-----**-ïjhv#i;i;Ë*--**"N: onfne NOtrl PlVsiGIùskIPAddr# I (sQlcturtl) hlhs rcDEt F Addrôss

sews (5QLCLUSÌI) Online NoDEI sel 5trvãsdvd AgenL (sQLcLUfl) Online NoDEt seL server Agent

Figura L4-22 Cluster de um nó configurado.

35. É impossível instalar todos os nós de um cluster a partft de uma única máquina;portanto, troque para Node2, mapeie o diretório em Nodel que tem os arquivos deinstalação do SQL Server e inicie a instalação do SQL Server diretamente de Node2.

36. Instale os pré-requisitos do .NET Framework, as hotfix necessârias e reinicialize, senecessário.

37. Quando chegar ao SQL Server Installation Center, clique no link Installation e cliqueem Add Node To A SQL Server Failover Cluster.

38. Depois que a análise de Setup Support Rules terminar, clique em OK.

39. Instale os arquivos de Setup Support.

4O. Depois que a segunda análise de Setup Support Rules terminar, clique em Avançar.

41. Na pâgina Cluster Node Configuration, selecione SQLCLUST1 para o nome da ins-lància, como mostrado na Figura 14-23. Clique em Avançar.

42.

43.

44.

45.

Especifique as senhas daconfa (ou contas) de serviço. Clique emAvançar.

Marque as caixas de seleçáo da pâgina Error And Usage Reporting, conforme forapropriado, e depois clique em Avançar.

Verifique se o servidor passa em todas as regras de nó e clique em Avançar.

Clique em Instalar parainiciar a instalação, como mostrado na Figura 14-24.

Page 482: Livro_SQL

Capítulo 14 r Cluster de Failover

Figura L4-23 Selecionando a instância em cluster a ser configurada.

FiguraL4-24 lnstalando binários no segundo nó.

Page 483: Livro_SQL

482

Resumo da lição

Kit de Treinamento MCTS (Exame70-432): Mioosoft SQL Server 2008

I Você pode conflgurar o SQL Server como clusters de uma ou de várias instâncias.

I As verificações de vitalidade LooksAlive e IsAlive oferecem a capacidade de detectarfalhas e failover automaticamente.

r Embora uma instância possa usar vários discos, você só pode associar um disco a

uma única instância em cluster do SOL Server.

Revisão da lição

Responda as perguntas a seguir paÍalestar seu conhecimento sobre a Lição 2. Asper-guntas também estão disponíveis no CD do livro (em inglês) se você preferir revisá-lasem formato eletrônico.

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" nofinal do livro.

1. O Messenger consolidado está sofrendo paralisações devidas a falhas de hardware.Como o negócio da empresa depende de bancos de dados SQL Server, uma soluçãoprecisa ser implementada para minimizar o tempo de paralisação. A gerência tam-bém quer garantir que o sistema possa se recuperar de falhas sem exigir a interven-

çáo do pessoal de TI. Que tecnologia você pode usar para cumprir esses requisitos?

A. Log shipping

B. Replicação

C. Failover cluster

D. Snapshots de banco de dados

2. Atualmente, a Trey Research tem quatro instâncias de SQL Server executando umavariedade de bancos de dados para apoiar a pesquisa médica da empresa. ,t Instân-cial exige 200 GB de espaço em disco para bancos de dados e atende mais de 500usuários concomitantes. A Instância2 exige cerca de I terabyte de espaço de arma-zenamento para um pequeno grupo de 25 pesquisadores que estão investigandotratamento de genomas. A Instância3 e a Instância4 contêm bancos de dados me-nores que gerenciam toda a infraestrutura da empresa (por exemplo, RecursosHu-manos, FolhaDePagamento e Contatos). o banco de dados Genetrak na Instâncialconsome rotineiramente mais de 60o/o da capacidade do processador. A lnstãncia2utiliza em média 45o/o do processador. Qual versáo e edição do Windows sáo neces-sárias para se construir um ambiente de cluster do SQL Server com custo mínimo?

A. Windows 2000 Advanced Server

B. Windows 2000 ediçáo Datacenter

C. Windows Server 2003 ediçâo Standard

D. Windows Server 2003 ediçáo Enterprise

Page 484: Livro_SQL

Revisão do capítuloParu reforçar o que aprendeu neste capítulo, você pode:

r Ler o resumo do capítulo.

r Examinar a lista de termos-chave introduzidos neste capítulo.

r Completar o cenário de caso. Esse cenário aborda situações reais que envolvem os

tópicos deste capítulo e solicita que você crie uma soluçáo.

r Completar as práticas sugeridas.

I Fazu um teste.

Resumo do capítuloI O cluster do SQL Server é baseado no cluster do Windows para fornecer detecçáo de

falha automâtica e failover automático.

r Um cluster pode ser configurado como um cluster padrâo, com um quórum com-partilhado, ou como um conjunto de nós de maioria, com uma cópia do banco dedados de quórum em cada nó.

r As verificaçóes de vitalidade LooksAlive e IsAlive são projetadas para delectar fa-lhas de hardware, assim como a indisponibilidade do SQL Server para conexóes.

I O failover cluster do SQL Server protege somente contra uma falha de hardware.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando oglossário no final do livro.

I Grupo de cluster

I Nome de cluster

r Nó de cluster

I Recurso de cluster

r Cluster de conjunto de nós de maioria

r Banco de dados de quórum

r Cluster paûão

Cenário de caso

No cenário de caso a segui¡ vocêvai aplicar o que aprendeu neste capítulo. As respostasdessas questões podem ser encontradas na seção "Respostas", no final deste livro.

Capítulo L4 r Cluster de Failover 483

Page 485: Livro_SQL

484 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Cenário de caso: Planejamento para alta disponibilidadeNo cenário de caso a seguir, você vai aplicar o que aprendeu sobre failover clustering. Asrespostas dessas questóes podem ser encontradas na seçáo "Respostas", no final destelivro.

Histórico

Visão geral da empresa

A Margie's Travel oferece serviços de viagem em um único escritório localizado em SanDiego. Os clientes podem se encontrar com um agente no escritório de San Diego oufazer preparativos através do site da empresa.

Declaroções de problema

Com a inclusão de um novo catálogo de produtos, o site está com problemas de estabitrida-de. Os clientes também são impedidos de adquirir produtos ou serviços em vários momen-tos durante o dia, quando estão sendo feitas alterações nos dados subjacentes.

A empresa acabou de dispensar a firma de consultoria responsável pelo desenvolvimentoe gerenciamento do site e de todos os outros aplicativos da empresa, porque não conse-guiu fornecer nenhuma disponibilidade para os sistemas fundamentais para o negócio.

Mudanças planejadas

O superintendente de tecnologia (CTO) recentemente contatado foi incumbido de imple-mentar alta disponibilidade para todos os sistemas fundamentais para o negócio. O CTO

acabou de contratar um DBA e um administrador de sistemas para ajudar nessa tarefa,assim como para gerenciar as operações diárias.

Ambiente de dados existenteExistem 11 bancos de dados dentro do ambiente, como mostrado na Tabela 14-12.

Tabela 14-12 Bancos de dados da Margie's Travel

Orders

Customers

CreditCards

Employees

Human Resources Armazena todos os documentos de recursos humanos (RH), 300 MBassim como salários de funcionários.

Armazena todos os pedidos feitos pelos clientes.

Armazena todas as informaçöes pessoais relacionadas a um L5 GBcliente.

Products

Flights

Armazena informaçöes de cartão de crédito de cliente.

Armazena informaçöes relacionadas a todos os funcionários. 50 MB

CarRentol

Armazena os produtos que podem ser comprados no site

Armazena os voos que foram reservados pelos clientes.

Armazena os cruzeiros que foram reservados pelos clientes. 1 GB

Armazena os aluguéis de carro que foram reservados pelos L GB

clientes.

50 GB

2OO MB

25 GB

2GB

(continuo)

Page 486: Livro_SQL

Tabela 14-12 Bancos de dados da

Excursions

Admin

O ambiente tem um único servidor da Web, chamado WEB1, e um único servidor de

banco de dados, chamado SQL1. Todos os servidores estão sendo executados no Win-dows Server 2003 e SQL1 está executando SQL Server 2008.

SQL1 tem um gabinete de armazenamento externo conectado a uma controladora RAID(redundanl array of inexpensive disks) com uma reserva capaz de implementar RAID 0,RAID 1 e RAID 5. Atualmente, o conjunto inteiro está configurado como um único RAID0. O armazenamento atual estâ com apenas 70o/o da capacidade.

Uma unidade de fita está conectada em WEBl e em SQL1, mas as unidades de fita nun-ca foram usadas.

Atualmente, SQL1 e \MEB1 estão Tocalizados no cubículo adjacente ao consultor dispen-sado anteriormente. Todos os aplicativos em WEBl foram escritos com Active ServerPages (ASP) ou ColdFusion.

Ambiente proposto

O CTO reservou uma parte do orçamento para comprar mais quatro servidores confl-gurados com Windows Server 2003 e SQL Server 2008. Todo hardware seftt capaz de

suportar cluster.

Os dados dentro dos bancos de dados Products, Customers, Orders, Flíghts, Crutses,Excursíons eCarRental podem ser expostos na Internet por meio de aplicativos em exe-cuçáo em WEB1. Todos os outros bancos de dados devem ficar aûâs do firewall e seracessíveis somente para usuários autenticados no domínio corporativo.

Uma nova SAN está sendo implementada paÍa atmazenamento de banco de dados,contendo espaço em unidade suficiente para todos os bancos de dados. Cada um dos 20números de unidade lógica (LUNs) usados na SAN está configurado em uma configura-

ção de faixa de espelhos, com quatro discos em cada conjunto de espelho.

Requisitos empresariaisEstá em vigor uma solução de curto prazo que permite ao sistema ser completamenterecuperado de qualquer paralisaçáo dentro de dois dias úteis, com uma perda de dadosmáxima de uma hora. No caso de um desastre maior, a empresa pode sobreviver à perdade até dois dias de dados.

Uma janela de manutenção entre meia-noite e 08h00min de domingo está disponívelpara se fazer quaisquer alterações.

Uma soluçáo de prazo mais longo precisa ser criada para proteger a empresa de falhasde hardware, com uma paralisação máxima exigida de menos de um minuto.

Armazena as excursöes que foram reservadas pelos clientes. 2 GB

(Uma excursão é definida como algo que não é voo, cruzeiro,produto ou aluguel de carro.)

Um banco de dados utilitário para uso dos DBAs, queatualmente está vazio.

ie's Travel (conti nuaçõo)

Capítulo l-4 r Cluster de Failover 485

L2 GB

Page 487: Livro_SQL

486

Requisitos técnicosOs bancos de dados Orders e Customers precisam seÍ atmazenados na mesma instânciado SQL Server e ter failover em conjunto, pois os dois bancos de dados estão vinculados.

Todos os bancos de dados relacionados ao RH devem ter segurança muito forte, comacesso somente para o diretor de RH. Todos os dados de HR devem ser criptografadosdentro do banco de dados, assim como em qualquer outra parte da rede.

O departamento de marketing precisa construir relatórios com todos os dados de clientee pedido, junto com os produtos ou serviços associados que foram reservados, paradesenvolver novas campanhas de marketing e ofertas de produto. Toda análise exigedados quase em tempo real.

Todos os bancos de dados sáo obrigados a manter 99,92Yo de disponibilidade duranteum ano inteiro. Um mínimo de intervençáo dos administradores é necessário para se

recuperar de uma paralisação. Os clientes que estejam usando o site náo podem saberquando ocorre um failover.

1. Que tecnologia (ou tecnologias) você pode usar para satisfazer todas as neces-sidades de disponibilidade e empresariais? (Escolha todas as respostas que se

aplicam.)

A. Um cluster de conjunto de nós de maioria com dois nós

B. Um cluster padrâo de dois nós

C. Espelhamento de banco de dados

D. Replicaçáo

2. Que tecnologia deve ser usada para salisfazer as necessidades do departamento de

marketing?

A. Failover cluster

B. Espelhamento de banco de dados

C. Log shipping

D. Replicaçáo

3. Qual combinação de Windows e SQL Server satisfaz as necessidades da Margie'sTravel com o menor custo?

A. Windows Server 2003 edíçáo Standard com SQL Server 2008 Standard

B. Windows Server 2003 ediçáo Enterprise com SQL Server 2008 Standard

C. Windows Server 2003 edição Enterprise com SQL Server 2008 Enterprise

D. Windows Server 2003 edição Datacenter com SQL Server 2008 Datacenter

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

Kit de Treinamento MCTS (ExameTO-432): Microsoft SQL Server 2008

Page 488: Livro_SQL

Cluster do WindowsAs práticas sugeridas a seguir sobre este assunto são baseadas no cluster do Windowsconstruído na prâtica da Lição 1.

I Exercício 1 Faça o failover do cluster de Nodel para Node2 e observe o estado de

cada recurso, junto com o encadeamento de dependência.

I Exercício 2 Faça o failover de todos os grupos em Node1. Remova Node2 do cluster.

r Exercício 3 Adicione Node2 novamente no cluster.

r Exercício 4 Altere o endereço IP do cluster.

r Exercício 5 Complete a configuração de melhores práticas para um cluster doWindows, configurando a rede Public como All Communications e a rede Privatecomo Internal Clustering Communications Only.

Cluster de failover do SQL Server

As práticas sugeridas a seguir sobre este assunto sáo baseadas na instância de failovercluster do SQL Server construída na prâtica daLiçáo 2.

r Exercício 1 Faça o failover da instância do SQL Server de Nodel para Node2 e

observe o estado de cada recurso, junto com o encadeamento de dependência.

r Exercício 2 Instale uma segunda instância de failover cluster no cluster do Win-dows.

I Exercício 3 Altere o endereço IP do servidor que está executando o SQL Server.

r Exercício 4 Crie um compartilhamento de arquivo, adicione-o no cluster e confi-gure-o de modo que seja endereçável por meio do mesmo nome, independente donó em que esteja executando.

I Exercício 5 Conflgure o compartilhamento de arquivo de modo que, se náo conse-guir entrar online durante um failover, ele náo faça o grupo inteiro a ficar offline.

Capítulo 14 r Cluster de Failover

Faça um testeOs testes do CD deste livro (em inglês) oferecem muitas opções. Você pode fazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-frcaçáo 70-432. É possível configurar o teste para que ele simule a experiência de fazerum exame de certificação ou configurâ-7o no modo de estudo (study mode) para ver as

respostas corretas e explicações depois de cada questão.

MA|S TNFORMAçöES Testes

Para mais detalhes sobre todas as opções de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

Page 489: Livro_SQL
Page 490: Livro_SQL

Capítulo l-5

lspelhamgo espelhamento de banco de dados (database mírroing) oferece uma alternativa detolerância à falha ao cluster de failover do SQL Server, enquanto tambémpermite quea proteção à falha seja limitada a um ou mais bancos de dados, emvez da instânciainteira.

Este capítulo explica como se projeta e implanta espelhamento de banco de dados.

Objetivo de exame neste capítulo:

r Implementar um espelhamento de banco de dados.

Liçöes deste capítulo:

r Lição 1: Visão geral do espelhamento debanco de dados 49O

r Liçáo 2: lnicializando o espelhamento de banco de dados 5O2

r Liçáo 3:Projetando estratégias de failover e failback SO9

Antes de começarParafazer as lições deste capítulo, você deve ter:

r Três instâncias do SQL Server instaladas

tr Duas das instâncias devem estar executando SQL Server 2008 Standard, Enter-prise ou Developer

tr Uma das instâncias pode ser qualquer edição do SQL Server, inclusive o SeLServer 2008 Express

r Uma versão do SQL Server 2005 do banco de dados AdventureLl/orks instalada empelo menos uma das instâncias

CUIDADO Dados FILESTREAM

Você precisa de uma versão do banco de dados AdventureWorks de uma edição anterior doSQL Serveç pois a versão do SQL Server 2008 do banco de dados AdventureWorks contémdados FILESTREAM e o espelhamento de banco de dados não é compatível com esses dados.

Page 491: Livro_SQL

490

Lição 1: Visão geral do espelhamento de banco de dados

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Como uma nova tecnologia, o espelhamento de banco de dados introduz uma termino-logia nova, com novos recursos. Esta lição aborda a terminologiautilizada e fornece umentendimento do funcionamento do espelhamento de banco de dados.

Após esta lição, você será capaz de:

I Projetar roles de espelhamento de banco de dados

Tempo estimado para a lição:45 minutos

Roles do espelhamento de banco de dados

Existem duas roles de espelhamento de banco de dados obrigatórias e uma terceira op-cional. Você deve designar um banco de dados no principal role e outro banco de dados

no role de espelho. Se quiser, você também pode designar uma instância do SQL Server

no role de servidor de witness (testemunha) para comandar o failover automático do

principal paÍa o banco de dados de espelho. A Figura l5-7 mosfra um diagrama de refe-

rência para uma configuraçáo de espelhamento de banco de dados.

Figura 15-1 Componentes do espelhamento de banco de dados.

os bancos de dados designados no principal role e espelho compreendem uma sessão

de espelhamento de banco de dados. Você pode configurar um servidor de witness (tes-

temunha) opcional pan cada sessão e um único servidor de witness (testemunha) pode

gerenciarvâúas sessões de espelhamento de banco de dados.

Page 492: Livro_SQL

Principal roleo banco de dados configurado napríncípal role torna-se a origem de todas as transaçõesem uma sessáo de espelhamento de banco de dados. O banco de dados principal (ou pri-mário) é recuperado e permite conexões, e os aplicativos podem \er e gravar dados nele.

NOTA Servindo o banco de dados

Quando uma instância tem um banco de dados que permite que transaçöes sejam processa-das nele, diz-se que está "servindo o banco de dados".

Role de espelho

Capítulo L5 r Espelhamento de Banco de Dados

O banco de dados definido no role de espelho é o parceíro do banco de dados principal e

recebe transações continuamente. O processo de espelhamento de banco de dados estáconstanlemente reproduzindo transações do banco de dados principal pan o log detransação e descarregando o log de transação nos arquivos de dados do banco de dadosde espelho, de modo que o banco de dados de espelho contém os mesmos dados do ban-co de dados principal. O banco de dados de espelho está em um estado de recuperação;portanto, ele não permite conexões de qualquer tipo e transações não podem ser grava-das nele diretamente. Contudo, você pode criar um snapshot de banco de dados em umbanco de dados de espelho para fornecer aos usuários acesso somente leitura aos dadosdo banco de dados em um ponto específico no tempo.

NOTA Estados operacionais temporários

Os principal roles e de espelho são estados operacionais temporários dentro de uma sessão deespelhamento de banco de dados. Como os bancos de dados são equivalentes exatos e sãomantidos em sincronismo, um ou outro banco de dados pode assumir o principal role ou deespelho em dado momento.

49L

Servidor de witness (testemunha)O role de servidor de wítness (testemunha) é o terceiro role, opcional, que você pode de-finir para espelhamento de banco de dados. o único objetivo da witness (testemunha) é

servir como ârbitra dentro do modo de operação Alta Disponibilidade, para garantir queo banco de dados possa ser servido em apenas uma instância do SQL Server por vez. Seum banco de dados primário falhar e a witness (testemunha) confirmar a falha, o bancode dados de espelho poderâ assumir o role primário e tornar seus dados disponíveispara os usuários.

Embora o espelhamento de banco de dados permita que um principal e um espelhoocorram somente em pares (por exemplo, um principal não pode ter mais de um espelhoe vice-versa), um servidor de witness (testemunha) pode atender vârios pares de espe-lhamento de banco de dados. A view de catâ.7ogo sys.database rnínoríng wítnessesaÍmazena uma linha pan cada par de espelhamento de banco de dados atendido pelawitness (testemunha).

Page 493: Livro_SQL

492 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

TMPoRTANTE Roles em nível de banco de dados versus roles em nível de servidor

Os principal roles e de espelho ocorrem em nível de banco de dados e devem ser definidasdentro das instâncias do SQL Server 2008 que estejam executando as versöes Standard ouEnterprise. Contudo, você define o role witness (testemunha) em nível de instância. A instância

do SQL Server 2008 que você utiliza para o servidor de witness (testemunha) pode estar exe-

cutando qualquer edição, inclusive SQL Server 2008 Express, que é o motivo pelo qual vocêse refere a um principal ou espelho como bonco de dados, mas a uma witness (testemunha)

como servidor.

Endpoints do espelhamento de banco de dados

Todo tráfego de espelhamento de banco de dados é transmitido por um TCP endpoíntcom a catga :úlil DATABASE _MIRRORING. Você pode criar apenas um endpoint do espe-

thamento de banco de dados por instância do SQL Server.

MA|S TNFORMAçÕES Endpoint

Para obter mais informaçöes sobre a definição de endpoint, consulte o Capítulo L1, "Projetan-

do a segurança do SQL Server".

Por padráo, o endpoint no de espelhamento de banco de dados é definido naporla5022.Embora a poÍta 5022 possa ser usada para espelhamento de banco de dados, recomen-da-se escolher um número de porta diferente para evilar uma configuração que possa

ser atacada por um hacker inexperienÍe que esteja tentando explorar sistemas que usam

uma configuraçáo padráo.

Você pode configurar várias instâncias do SQL Server em um único servidor e cada ins-tãncia pode ter um único endpoint do espelhamento de banco de dados. Contudo, você

deve definir um número de porta diferente para o endpoint de espelhamento de bancode dados em cada instância no mesmo servidor. Se você vai usar apenas uma instânciapor servidor para espelhamento de banco de dados, então deve padronizar um númerode porta dentro de seu ambiente.

Você pode atribuir um nome para cada endpoint criado. O nome de um endpoint de

espelhamento de banco de dados é usado somente quando o esiado está sendo alteradoou uma instrução GRANT/REVOKE está sendo executada. Como o nome do endpoint é

usado somente por um adminislrador de banco de dados (DBA) para operações inter-nas, recomenda-se deixar a configuração do nome com seu valor padráo, Mírroríng.

A segurança é o aspecto mais importante que você configura para o espelhamento de

banco de dados. Você pode configurar o endpoint de espelhamento de banco de dados

para comunicaçáo criptografada ou náo criptografada. Recomenda-se deixar o endpointconfigurado com o valor padráo, que criptografatodotráfego entre endpoint. Se as ins-tâncias que estáo participando do espelhamento de banco de dados não têm a mesmaconta de serviço para o serviço do SQL Server, você deve gannfir que cada conta de

serviço tenha acesso garantido ao SQL Server e também receba autoridade CONNECT TO

no endpoint de espelhamento de banco de dados.

Page 494: Livro_SQL

MAIS INFORMAçöES Tornando um endpoint seguro

Para obter mais informaçöes sobre a definição da segurança de um endpoint de espelhamentode banco de dados, consulte o Capítulo 11.

Modos de operação

Você pode configurar o espelhamento de banco de dados em três modos de operaçãodiferentes: Alta Disponibilidade, Alto Desempenho e Alta Segurança. O modo de opera-

çáo governa a maneira pela qual o SQL Server transfere transações entre os bancos de

dados principal e de espelho, assim como os processos de failover que estáo disponíveisna sessáo de espelhamento de banco de dados. Nesta lição você vai aprender sobre cadamodo de operação, as vantagens de cada modo e como os recursos de cache e redirecio-namento transparente de clientes proporcionam vantagens ao espelhamento de bancode dados em relaçáo às outras tecnologias de disponibilidade.

Modo de operação Alta DisponibilidadeO modo de operação Alta Dísponibílídade fornece transferência síncrona durável entreos bancos de dados principal e de espelho, assim como detecção de falhas automâtica e

failover automático.

Primeiramente, o SQL Server grava todas as transações em buffers de memória dentrode seu espaço de memória. O sistema grava esses buffers de memória no log de tran-sação. Quando o SQL ServeÍ grava uma transação no log de transaçáo, o sistema fazo espelhamento de banco de dados começar a transferir as linhas do log de transaçãode determinada transação para o espelho. Quando o aplicativo efetiva a lransação, elaé efeúvada primeiramente no banco de dados de espelho. Um reconhecimento da efe-tivação é enviado de volta parc o principal, o qual permite então que a efetivação sejarealizada no principal. Nesse ponto, o reconhecimento é enviado devolta parao apTi-

caÍivo, permitindo que ele continue o processamento. Esse processo garanle que todasas transações sejam efetivadas e perpetuadas no log de transação nos bancos de dadosprincipal e de espelho, antes que a efetivação seja retornada para o aplicativo.

A maneira pela qual o espelhamento de banco de dados manipula transações o diferenciadas outras tecnologias de failover, como log shipping e replicaçáo, que precisam esperarque uma transaçáo termine antes que possa ser transferida para a oufta máquina. O espe-lhamento de banco de dados transmite os registros de log à medida que eles são gravadosno principal. Processando dessa maneira, o espelhamenlo de banco de dados pode mani-pular transações que aÍetam números muito grandes de linhas, com muito pouco impactonos aplicativos. Na verdade, à medida que o tamanho médio das transações aumenta, o

impacto da transferência síncrona de dados do espelhamento de banco de dados diminui.A diminuiçáo no impacto acontece porque, à medida que o tamanho da transação aumen-ta, o reconhecimento necessário para o modo de operação Alta Disponibilidade exige umaporcentagem menor do tempo de execução global da transação.

A transferência síncrona de dados representa um problema de planejamento para osaplicativos. Como uma transação não é considerada efetivadaatê que o SQL Server a

Capítulo 15 r Espelhamento de Banco de Dados

Page 495: Livro_SQL

494 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

tenha efetivado com êxito no log de transação, tanto no banco de dados principal comono de espelho, o modo de operação Alta Disponibilidade acafieta uma sobrecarya de de-sempenho para os aplicativos. À medida que a distância entre o principal e as instânciasde espelho aumenta, o impacto sobre o desempenho também aumenta.

O modo de operação Alta Disponibilidade exige um servidor de witness (testemunha),junto com os bancos de dados principal e de espelho para que o espelhamento debanco de dados detecte uma falha no principal e faça o failover no espelho automati-camente. Para detectar uma falha, o modo de operaçáo Alta Disponibilidade usa umteste de ping simples entre cada instância participante da sessáo de espelhamento debanco de dados.

CUIDADO Limitação do teste de ping

Um banco de dados pode se tornar inacessível por causa de uma transação descontroladaou outras operaçöes. Contudo, o espelhamento de banco de dados não detecta essas falhas;somente o insucesso do teste de ping é considerado uma falha.

Você também precisa equilibrar cuidadosamente o número de sessöes de espelhamento confi-guradas em uma instância. Cada banco de dados participante de uma sessão de espelhamentofazum envio de ping para o outro banco de dados a cada dois segundos, para determinarse ele ainda está conectado e disponível. Tanto o principal como o espelho devem fazer umenvio de ping para a witness (testemunha) a cada dois segundos para determinar se ainda estáconectada e disponível. A falha de um teste de ping causa um failover no modo de operaçãoAlta Disponibilidade. Ter um grande número de bancos de dados participando das sessöes deespelhamento em um único servidor aumenta a possibilidade de um failover anormal, devidaà saturação da rede.

Quando é feito um failover na sessão de espelhamento de banco de dados, o SQL Serverinverte os principal role e role de espelho. O SQL Server promove o banco de dados de

espelho para principal e começa a servir o banco de dados; entáo, ele rebaixa o bancode dados principal para espelho. o SQL Server também inverte o fluxo de transaçáo au-tomaticamente. Esse processo é um aprimoramento significativo em relaçáo aos outrosmétodos de disponibilidade, como a replicaçáo ou o log shipping, que exigem interven-

çáo manual ou mesmo reconfiguraçáo para inverter o fluxo de transação.

Nesse processo de failover automâtico, o espelho basicamente promove a si mesmo paraprincipal e começa a servir o banco de dados. Mas, primeiro, o servidor de witness (teste-munha) precisa arbitrar o failover e a inversão de role, exigindo que duas das três rolesdo espelhamento de banco de dados - ou um quórum - concordem com a promoção.Um quórum é necessário para impedir que o banco de dados seja servido em mais de umainstância dentro da sessão de espelhamento de banco de dados. Se o principal falhar e

o espelho não puder se conectar na witness (testemunha), será impossível chegar a umquórum e o SQL Server não poderâ promover o espelho para principal.

NOTA Problema do cérebro dividido

Se o espelho pudesse determinar sozinho que deveria servir o banco de dados, poderia acar-retar uma situação na qual o banco de dados seria acessível para transações em mais de umservidor. lsso é referido como problema do "cérebro dividido".

Page 496: Livro_SQL

A detecção de falha automâtica e o failover do modo de operaçáo Alta Disponibilidadeseguem estes passos gerais:

1. O principal e o espelho fazem um teste de ping continuamente um para o outro.

2. A witness (testemunha) faz um teste de ping periodicamente para o principal e para oespelho.

O principal falha.3.

4. O espelho detecta a falha e Íaz um pedido pan a witness (testemunha) para se pro-mover para banco de dados principal.

A witness (testemunha) náo pode fazer um teste de ping no principal, mas pode

fazê-lo no espelho; portanto, a witness (testemunha) concorda com a inversáo de

role e o SQL Server promove o espelho para principal.

O servidor principal volta a ficar online depois da falha e detecta que o espelho foipromovido para principal.

O SQL Server rebaixa o principal original para espelho e as transações começama fluir para esse banco de dados, para voltarem a estar sinctonizadas com o novoprincipal.

Capítulo 1"5 r Espelhamento de Banco de Dados

5.

6.

T.

IMPORTANTE Hot standby: a witness (testemunha) deve estar online

O failover automático só poderá ocorrer se o servidor de witness (testemunha) estiver online.Se a witness (testemunha) estiver offline, o failover automático não acontecerá. lsso significaque você pode usar o modo de operação Alta Disponibilidade para fornecer um servidor "hotstandby" somente quando o servidor de wítness (testemunha) estiver online. Caso contrário,você terá uma configuração de "warm standby".

495

Modo de operação AIto DesempenhoO modo de operação Alto Desempenho usa um banco de dados principal e um de espelho,

mas náo precisa de servidor de witness (testemunha). Esse modo de operaçâo forneceuma configuraçâo de "warm standby" que não suporta detecção de falhas automâticanem failover automático.

O modo de operaçáo Alto Desempenho náo faz lailover automaticamente porque as

transações sáo enviadas para o espelho de forma assíncrona. As transaçóes sáo efeti-vadas no banco de dados principal e reconhecidas no aplicativo. Um processo separadoenvia essas transações constantemente para o espelho, o que introduzlatência no pro-cesso. Essa latência impede que uma sessáo de espelhamento de banco de dados tenhafailover automático, porque o processo não pode garanlir que o espelho tenha recebidotodas as transações quando ocorrer uma falha.

Como a transferência é assíncrona, o modo de operação Alto Desempenho não afetao desempenho dos aplicativos e você pode ter maior separaçáo geogrâfica entre oprincipal e o espelho. Contudo, como a transferência de dados é assíncrona, você podeperder transações em caso de falha do principal ou quando força um failover da ses-

sáo de espelhamento.

Page 497: Livro_SQL

496 Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

Modo de operação AIta SegurançaO modo de operação Alta Segurança transfere as transações de forma síncrona, mas nã.otem servidor de witness (testemunha). A transferência síncrona galante que todas as fran-sações efetivadas no principal sejam efetivadas primeiramente no espelho e isso exige asmesmas considerações de desempenho do modo de operaçáo Alta Disponibilidade. Cõntu-do, a faha de uma witness (testemunha) impede o failover automático no espelho, caso oprincipal venha a falhar. Se o principal falhar no modo de operaçáo Alta Segurança, vocêdeverâ promover o espelho manualmente para servir o banco de dados.

Um failover manual sem a possibilidade de perda de transações só é possível no modode operação Alta segurança. Quando você faz failover manualmente no modo de ope-ração Alta Segurança, o SQL Server 2OO8 desfaz todas as conexões do banco de dadosprincipal e muda o estado para sincronizando, impedindo que quaisquer novas cone-xões sejam estabelecidas. o final do logde transação é enviado parao espelho e, em se-guida, o principal role e o role de espelho são trocadas. Nesse ponto, os clientes podemse conectar novamente no banco de dados e continuar a processar transações.

METHORES PRÁnCAS Modo de operação Alta Segurança

Como a transferência síncrona do modo de operação Alta Segurança pode afetar o desem-penho dos aplicativos, mas não oferece a vantagem do failover automático, esse modo deoperação não é recomendado para operações normais. Você deve configurar uma sessão deespelhamento de banco de dados no modo de operação Alta Segurança somente quandoprecisar substituir o servidor de witness (testemunha) existente. Depois de ter substitr.¡ído ourecuperado a witness (testemunha), você deve mudar o modo de operação de novo paraAlta Disponibilidade.

Uso de cache

Cada tecnologia de alta disponibilidade disponível no SQL Server 2OO8 temimplicaçõesno desempenho e possivelmente nos aplicativos durante um failover. o cluster evita osproblemas de aplicativo, pois utiliza apenas uma instância; no entanto, a instância devereiniciar em outro nó, fazendo com que as caches de dados e consulta sejam novamentepreenchidas. O log shipping exige alteraçóes no aplicativo pa:-voTtar a se conectar noservidor secundário e exige que a cache de dados e a cache de procedure sejam nova-mente preenchidas. A duplicaçáo exige alterações no aplicativo para voltar a se conectarem um assinante e tem certo impacto no desempenho, pois a cache de consulta e parÍeda cache de dados precisam ser novamente preenchidas.

contudo, o espelhamento de banco de dados náo tem problemas de cache. Além deenviar transações para o espelho, o espelhamento de banco de dados realiza transfe-rências periódicas de metadados. o objetivo dessas transferências de metadad os é fazercom que o espelho leia páginas na cache de dados. Esse processo mantém a cache doespelho em um estado "semi-hot". A cache do espelho não reflete o conteúdo exato dacache do principal, mas contém amaioria das páginas. Assim, quando ocorre o failoverda sessáo de espelhamento de banco de dados, o SQL Server náo precisa reconstruir acache completamente e os aplicativos não sofrem um impacto no desempenho táo gran-de quanto sofreriam se você usasse as outras tecnologias de disponibilidade.

Page 498: Livro_SQL

Redirecionamento transparente de clientes

Iv

i

'i

Um dos processos mais diffceis do failover ao se usar log shipping ou replicação envol-ve as conexões de aplicativo. Os aplicativos devem ser redirecionados para o servidorsecundário para continuar o processamento. O espelhamento de banco de dados pode

evitar esse requisito sob uma configuraçáo muito particular.

A nova versáo do Microsoft Data Access Components (MDAC) que acompanha o Micro-soft Visual Studio 2008 contém um recurso relacionado a espelhamento de banco de

dados dentro do objeto de conexão, chamado redírecíonamento transparente de clíentes.

Quando um cliente estabelece uma conexão com um principal, o objeto de conexão co-loca tanto o principal como o espelho na cache. Esse uso de cache é transparente para o

aplicativo e os desenvolvedores náo precisam escrever nenhum código para implemen-tar essa funcionalidade.

Se fot rcalizado o failover de uma sessão de espelhamento de banco de dados enquanto umaplicativo estiver conectado, a conexão será desfeita e o objeto de conexão enviarâ um erropara o cliente. Então, o cliente precisará apenas se reconectar; a cache de conexáo dentrodo MDAC redireciona a conexão automaticamenle paru o servidor de espelho. O aplicativose comporta como se estivesse se conectando no mesmo servidor em que estava conectadooriginalmente, quando, na verdade, está conectado em outro servidor.

Threading do espelhamento de banco de dados

O espelhamento de banco de dados é um processo de múltiplos threads que permite a execu-

çáo de várias operações em paralelo entre o principal, o espelho e a witness (testemunha).

Quando você inicia uma sessáo de espelhamento de banco de dados, o Service Broker é

recrutado para gerenciar um thread de comunicação global. O thread de comunicaçáoglobal é usado para detectar quando um participante da sessão de espelhamento de

banco de dados não está disponível, para que o failover possa ocorrer quando estiverconfigurada no modo de operaçáo Alta Disponibilidade e mensagens de status possamser passadas entre os membros da sessão.

Além do thread de comunicaçáo global, é críado na instância um thread por banco de da-dos participante das sessóes de espelhamento de banco de dados. O objetivo dos threads de

banco de dados é trocar mensagens entre o principal e o espelho, como transações e reco-nhecimentos. No espelho, ê, aberto um thread por banco de dados pan gercnciar o processode gravação de registros de log e manter as caches de consulta e dados.

A witness (testemunha) tem um thread adicional que é usado para gerenciar todasas mensagens entre ela e as sessões de principal/espelho participantes. As principaismensagens enviadas no thread da witness (testemunha) são alterações de estado doprincipal/espelho e pedidos de failover.

Snapshots de banco de dadoso banco de dados de espelho dentro de uma sessáo de espelhamento de banco de dadosestá constantemente em um estado de recuperação e fica inacessível para os usuários.Contudo, você pode criar um snapshot em um banco de dados de espelho que forneçaacesso somente leitura em um ponto no tempo.

Capítulo 15 I Espelhamento de Banco de Dados 497

Page 499: Livro_SQL

498 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Um exemplo de criaçã,o de snapshot de banco de dados é o seguinte:

CREATE DATABASE Adventurelr/orksDS 0N( NAME = Adventurehlorks_Data, FILENAME ='Cr\Arquivos de Programa\Microsoft SQL Server\MSSQL]-O.MSSQLSERVER\MSSQL\Data\Adventu reÌdorks_data . ds ' )AS SNAPSHOT 0F Adventurellrlorks;GO

Criando snapshots em um banco de dados de espelho, você pode usar espelhamento debanco de dados para graduar a atividade de produçáo de relatórios.

{f t"rt" rápido

1. Quais são os três roles de espelhamento de banco de dados e para que ser-vem?

2. Quais são os três modos de operação do espelhamento de banco de dados?

3. Qual modo não é recomendado para operações normais?

Respostas

1. Atualmente, o banco de dados principal serve o banco de dados para aplica-tivos. O banco de dados de espelho está em um estado de recuperação e nãopermite conexões e o servidor de witness (testemunha) opcional é uma instân-cia do SQL Server utilizada pan detecçâo de falhas e failover automático deum banco de dados primário para um de espelho.

2. os três modos de operaçáo são: Alta Disponibilidade, Alto Desempenho e AltaSegurança.

3. O modo de operação Alta Segurança não é recomendado para operações nor-mais porque suas transferências síncronas têm um impacto para o alto de,sempenho sem a vantagem do failover automâtico.

PRÁTlcA Estabelecendo endpoints de espelhamento de banco dedados

Neste exercício, você vai estabelecer os endpoints necessários para uma sessáo de espe-lhamento de banco de dados. Você vai configurar endpoints para um principal, para umespelho e para uma witness (testemunha), para permitir a criação de uma sessão de es-pelhamento de banco de dados usando qualquer modo de operaçáo. Para esta e para aspráticas subsequentes deste capítulo, são usadas as convenções de atribuição de nomesdaTabela 15-1.

Tabela 15-1 Convençöes de atribuição de nomes de instância

INSTP

INSTM

INSTW

Principal

Mirror (espelho)

Witness (testemunha)

Page 500: Livro_SQL

No exercício a segui¡ as instâncias utilizadas são configuradas para usar autentica-

ção Windows Only. A conta usada para executar os serviços do SQL Server é chamadaSQLAdmin. Este exemplo presume que você tenha três servidores separados, cada umcom uma instância do SQL Server instalada. As instâncias que contêm o principal e

o espelho devem ser SQL Server 2008 edição Standard e posteriores. A instância quecontém a witness (testemunha) pode ser qualquer edição do SQL Server 2008. Você pre-cisará substituir o nome da instância pelo nome de seu servidor e SQLAdmin pelo nomede sua conta no Windows.

CUIDADO Números de porta

Se suas instâncias estão instaladas no mesmo servidon o número de porta precisa ser diferentepara cada endpoint, para não criar conflito na pilha fCP/lP.

Capítulo 15 I Espelhamento de Banco de Dados

1. Conecte-se com o INSTP no SQL Server Management Studio (SSMS), abra uma novajanela de consulta e execute o comando a seguir:

CREATE ENDPOINT [M'i rroring]AUTHORIZATION [INSTP\SQLAdmj n]STATE=STARTED

AS TCP (LISTENER_PORT = 5024, LTSTENER-IP = ALL)FOR DATA-MIRRORING (ROLE = PARTNER, AUTHENT]CAT]ON = hITNDOhfS NEGOTIATE

, ENCRYPTION = REQUIRED ALGORITHM RC4)

NOTA Recuperando informações de endpoint

Você pode recuperar informaçöes de endpoint consultando a view de gerenciamento dinâmi-co sys. d ata bo se_m i rrori n g_e n d poi nts.

499

2. Conecte-se com o INSTM, abrauma nova janela de consulta e execute o comando aseguir:

CREATE ENDPOINT [Mi rroring]AUTH0RIZATI0N IINSTM\SQLAdmj nlSTATE=STARTED

AS TCP (LISTENER_PORT = 5024, LTSTENER-IP = ALL)FOR DATA-MIRRORINC (ROLE = PARTNER, AUTHENTICATION = tIìlINDOhlS NEGOTIATE

, ENCRYPT]ON = REQUIRED ALGORITHM RC4)

NOTA Especificando um nome de endpoint

Especifique Mirroring como nome do endpoint, o que padroniza a convenção de atribuição denomes para esses tipos de endpoints, para que você possa distingui-los facilmente dos outrostipos de endpoints.

5. Conecte-se com o INSTW abra uma nova janela de consulta e execute o comando aseguir:

Page 501: Livro_SQL

500 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

CREATE ENDPOINT [Mi rroring]AUTHORIZATION [INSTl¡/\SQLAdmi n]STATE=5TARÏEDAS TCP (LISTENER-PORT = 5024, LTSTENER_TP = ALL)FOR DATA-MIRRORINC (ROLE = I^IITNESS, AUTHENTICATION = t¡lINDOVrlS NEGOTIATE

, ENCRYPTIoN = REQUIRED ALGORITHM RC4)

DICA DE EXAME

Para espelhamento de banco de dados, você deve configurar os endpoints principal, de espe-lho e witness (testemunha) em diferentes instâncias do SQL Server.

4. Conecte-se em cada instância e verifique os endpoints recém criados, executando oscomandos a seguir:

SELECT * FROM sys.database_mi rroringSELECT * FROM sys.database-m'i rroring-endpointsSELECT * FROM sys.database_mìrroring_witnesses

NOTA Alternativa de GUI

O SSMS tem uma interface de GUI para configurar endpoints de espelhamento de banco dedados e para configurar, fazer failovet fazer uma pausa, retomar e reconfigurar o modo deoperação de uma sessão de espelhamento de banco de dados. Você pode acessar essa GUIclicando com o botão direito do mouse em um banco de dados, selecionando Properties e, emseguida, selecionando a página Mirroring na caixa de diálogo Properties.

Resumo da lição

r O espelhamento de banco de dados envolve bancos de dados em três roles diferen-tes. O banco de dados no principal role está disponível para conexões e permitemodiflcações de dados. O banco de dados no role de espelho fica inacessível panconexões e recebe as transações executadas no principal. A witness (testemunha) é

definida parauma instância do SQL Server e é usada com o modo de operação AltaDisponibilidade para arbitar um failover.

r Você pode configurar o espelhamento de banco de dados em três modos de operaçãodiferentes. O modo de operaçáo Alta Disponibilidade consiste em um principal, umespelho e uma witness (testemunha), com failover automático. O modo de operaçãoAlto Desempenho consiste em um principal e um espelho, com failover manual. Omodo de operação Alta Segurança consiste em um principal e um espelho, com fai-lover manual. Os modos de operação ,{lta Disponibilidade e Alta Segurança trans-ferem dados de forma síncrona; o modo de operação Alto Desempenho transferedados de forma assíncrona.

r Todo trâfego de espelhamento de banco de dados é transmitido entre endpoints TCP

definidos em cada instância que contém um banco de dados participante de umasessão de espelhamento de banco de dados.

Page 502: Livro_SQL

Revisão da liçãoResponda as perguntas a seguir patateslaÍ seu conhecimento sobre aLição 1. As per-

guntas também estáo disponíveis no CD do livro (em inglês) se você preferir revisá-lasem formato eletrônico.

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" nofinal do livro.

Capítulo L5 r Espelhamento de Banco de Dados

t. Que role êvâlido para espelhamento de banco de dados?

A. Publicador

B. Principal

C. Primário

D. Monitor

Quais das seguintes são açóes válidas para uma witness (testemunha)? (Escolha

todas as respostas que se aplicam.)

A. Arbitrar um failover para o modo de operação Alta Segurança

B. Arbitrar um failover para o modo de operaçáo Alta Disponibilidade

C. Servir o banco de dados quando o principal e o espelho estáo offline

D. Servir vánias sessões de espelhamento de banco de dados

5. Quais das seguintes são opções de endpoint necessárias para que transações sejamtrocadas entre os bancos de dados principal e de espelho? (Escolha duas. Cada es-

colha representa uma patte da resposta correta.)

A. STATE configurado com a opçáo padráo

B. Porta 6083 especificadapara comunicaçáo

C. COMPRESSSION configurado como ENA-BLED

D. ROLE configurado como PARTNER

s01

Page 503: Livro_SQL

Lição 2: lnicializando o espelhamento de banco de dados

Kit de Treinamento MCTS (Exame 70-432): Micosoft SQL Server 2008

Você configura o espelhamento por banco de dados. Cadabanco de dados definidodeve usar o modelo de recuperação Completo pan participar de uma sessão de espe-lhamento. Cada banco de dados de espelho precisa ser sincronizado com o principalusando um backup, antes de você iniciar a sessão de espelhamento. Esta lição exami-na as quatro etapas gerais que você precisa executar parapreparar o espelhamento debanco de dados:

l. Cerúficaçse de que os bancos de dados estão configurados para usar o modelo derecuperação Completo.

2. Fazer backup do banco de dados primâúo.

3. Restaurar o banco de dados na instância que contém o banco de dados de espelhousando a opçáo NORECOVERY.

4. Copiar fodos os objetos de sistema necessários na instância que contém o banco dedados de espelho.

ffi orcn DE ExAME

O espelhamento não pode ser configurado em bancos de dados que tenham um grupo dearquivos FILESTREAM.

Após esta lição, você será capaz de:

I lnicializar o espelhamento de banco de dados

Tempo estimado para a lição:45 minutos

$þ "unoo real

Míchael Hoteþ.

Um cliente meu, com milhares de bancos de dados espalhados em centenas de ins-tâncias de SQL Server, estava em busca de uma estratégia de disponibilidade razo-avelmente simples. A solução atual en uma mistura de log shipping e replicação.Originalmente, a replicação estava implantada em vários sistemas, pois o clientequeria acapacidade de desfazer-se da atividade de produçáo de relatórios.

Contudo, à medida que o número de bancos de dados e instâncias cresceu, a cargasobre o distribuidor aumentou a ponto de ser necess ária quase uma dezena de dis-tribuidores diferentes. Além disso, o gerenciamento da arquitetura estava ficandocadavez mais complexo e representava um problema significativo para os novosDBAs que estavam sendo adicionados ao quadro da empresa.

Page 504: Livro_SQL

Após uma análise cuidadosa, foi determinado que esse cliente tinha necessidade,

atualmente náo atendida pela replicaçáo nem pelo 1og shipping, de um failover au-Íomatizado paravários dos bancos de dados. Toda atividade de produção derclató-rios nos assinantes poderia ser reaTizada com cópias de ponto no tempo dos dados.

os bancos de dados restantes não precisavam de failover automático.

Emvez de ampliar a arquitetura e teîlar proietar ferramentas para permitir ao

cliente implantar e gerenciar milhares de sessões de log shipping e replicação maisfacilmente, tomou-se a decisáo de substituir a atquitetura inteira por espelhamentode banco de dados.

A partir da versáo CTP 16 do SQL Server 2005, começamos a substituir sessões

de log shipping por espelhamento de banco de dados no modo de operaçáo AltoDesempenho. Depois que o grupo inicial foi implementado e a arquitetura estavaestabilizada, substituímos as sessões de log shipping restantes nos bancos de da-dos que precisavam de failover automâtico por espelhamento de banco de dadosno modo de operaçáo Alta Disponibilidade. Deixamos as sessões de replicaçáopor último - substituímos a replicação por espelhamento de banco de dadosexecutando no modo de operaçáo Alto Desempenho ou Alta Disponibilidade, de-

pendendo da capacidade de failover necessária. Implementamos jobs agendadosque mantinham em funcionamento um conjunto de snapshots no banco de dadosde espelho para os bancos de dados que estavam sendo usados para expandir a

capacidade de produção de relatórios.

Capítulo 15 I Espelhamento de Banco de Dados

Modelo de recuperação

O SQL Server oferece três modelos de recuperaçáo para bancos de dados: Simples, Re-

gistro em massa e Completo. o modelo de recuperaçáo Simples registra todas as tran-sações, mas remove a parle inativa do log de transação em cada checkpoint. O modelode recuperação Registro em massa náo registra certas operações completamente (por

exemplo, as operações BULK INSERT, BCP ou CREATE INDEX). Como o espelhamento de

banco de dados mantém os bancos de dados primário e de espelho como duplicatas exa-

tas, incluindo o sincronismo de todas as estruturas internas, como LSNs (Log Sequence

Numbers - números de sequência de 1og), os modelos de recuperação Simples e Registroem massa são incompatíveis com ele. Portanto, o único modelo de recuperação que umbanco de dados pode usar para participar no espelhamento é o Completo.

s03

NOTA Modelo de recuperação Completo exigido

Você não pode configurar espelhamento se os bancos de dados participantes não estiveremno modelo de recuperação Completo. Além disso, você não pode mudar o modelo de recupe-ração de um banco de dados participante do espelhamento.

Page 505: Livro_SQL

Backup e restauração

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Como os bancos de dados principal e de espelho sáo duplicatas um do outro, é neces-sário um mecanismo para garanlir que ambos sejam inicializados no mesmo estado. Oprocesso de inicialização do espelhamento de banco de dados envolve fazer umbackupdo banco de dados principal e restaurá-lo no espelho. o backup tambêm é o único me-canismo que você pode usar parainicializar o banco de dados de espelho, pois todas asestruturas internas, como os LSNs, assim como os dados, precisam ser sincronizados.

Ao restaurar o banco de dados no espelho, é fundamental que você especifique a opçáoNORECOVERY para o comando RESTORE, o que garanfe que o estado inicial do espelhoreflita o estado do banco de dados principal, incluindo os LSNs.

Você verá que o processo de backup e restauração consome a maior quantidade de tempodurante a configuração do espelhamento de banco de dados. Contudo, você provavelmen-te não pode colocar o banco de dados primário offline para iniciaTizar o espelhamento.Emvez disso, como o banco de dados no espelho está em um estado não recuperado, vocêpode aplicar um encadeamento de logs de transação para atualizar o espelho.

NOTA Inicializando o espelho

Em vez de fazer um backup para inicializar o espelho, eu sempre uso o último backup com-pleto do banco de dados primário e, então, aplico todos os logs de transação subsequentes.Depois de feitos todos os backups de log, eu executo um backup de log de transação final paracapturartodas as transaçöes restantes e, então, inicio o espelhamento de banco de dados. Ummétodo alternativo usa log shipping para manter os dois bancos de dados em sincronismo ecomo mecanismo de inicialização do espelhamento de banco de dados. Nesse caso, talvezvocê ainda tenha que aplicar pelo menos um backup de log de transação, antes de poder ini-ciar a sessão de espelhamento de banco de dados. Para obter mais informações sobre backup/restauração e log shipping, consulte o capítulo 9, "Backup e restauração", e o capítulo 1-6, "LogShipping', respectivamente.

Cópia de objetos de sistemao espelhamento de banco de dados opera em nível de banco de dados; portanto, ele nãoé responsável por nenhum outro objeto no servidor. Assim, embora voôê possa configu-rar o espelhamento de banco de dados para lazer failover automâtico no banco de da-dos de espelho, se quiser permitir que os aplicativos funcionem após um failover, devegaranfir que todos os outros objetos sejam transferidos para a instância que contém obanco de dados de espelho.

Os objetos mais comuns que você deve transferir são os logins que permitem aos apli-cativos serem autenticados para acessar o banco de dados. Você também pode ter ser-vidores vinculados, pacotes ssIS (sQL server Integration services), jobs do sQL serverAgent, mensagens de erro personalizadas ou outros objetos configurados no servidorque contém o banco de dados primárío. Copiar todos esses objetos na instância que con-tém o banco de dados de espelho é o último passo do processo de inicialização.

Page 506: Livro_SQL

NOTA Usando tarefas do SSIS para transferir objetos

Para transferir objetos para a instância que contém o banco de dados de espelho, você podeusar SSIS, o qual inclui a tarefa Transfer Logins para transferir logins de uma instância do SQLServer para outra, enquanto mantém as senhas criptografadas. O SSIS também fornece tarefaspara transferir jobs do SQL Server Agent, mensagens de erro e outros tipos de objetos.

f t"rt" rápido

Capítulo 15 I Espelhamento de Banco de Dados

1. Qual é o processo depreparação de um banco de dados para participar de umasessáo de espelhamento?

Respostas

1. Mudar o modelo de recuperação para Completo, fazerbackup do banco de

dados primário, restaurar a instância que contém o banco de dados de espelhocom a opção NORECOVERY e, em seguida, copiar todos os objetos de sistema,como logins, servidores vinculados, etc.

PRÁTlcA Configuração de espelhamento de banco de dados

Nos exercícios a seguir, você vai inicializat o espelhamento de banco de dados, configu-rar o modo de operaçáo e criar um snapshot debanco de dados.

MELHoRES PRÁTlcAs Modelo de recuperação €ompleto exigido

Como o espelhamento de banco de dados não pode ser configurado em um banco de dadosque tenha um grupo de arquivos FILESTREAM, é altamente recomendado que você separetodos os dados FILESTREAM em um banco de dados dedicado.

Neste exercício, você vai treinar a preparação de bancos de dados para espelhamentousando o banco de dadosAdventureWorks.

1. Conecte-se com o INSTP no SSMS, abra uma nova janela de consulta e execute o

código a seguir:

ALTER DATABASE Adventurel¡Íorks SET RECOVERY FULL;

2. Cñe um diretório, chamado C:\TK432, na máquina que contém INSTP

3. üie um diretório, chamado C:\TK432, na máquina que contém INSTM.

4. Faça backup do banco de dadosAdventureWorþs em INSTB executando o código aseguir:

BACKUP DATABASE Adventurel¡lorks T0 DISK ='C:\TK432\AdventureWorks.bak' ;

BACKUP LOG Adventurehlorks T0 DISK ='C:\TK432\Adventureldorks.trn' ;

Page 507: Livro_SQL

s06 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

5.

6.

Copie os backups criados no passo 4 namâquina que contém INSTM.

Restaure o banco de dados AdventureWorks em INSTM, certificando-se de especifi-car aîáo recuperação do banco de dados, executando o código a seguir:

RESTORE DATABASE Adventurel¡r/orks FROM DISK = 'C:\TK432\Adventurel¡r/orks.bak' hIITH NORECOVERY;

RESTORE LOG Adventurehforks FROM DISK ='C:\TK432\Adventurelr/orks.trn'IaIITH NORECOVERY;

7. Cúe um pacote SSIS para copiar todos os logins, jobs, servidores vinculados e men-sagens de erro personalizadas, de INSTP para INSTM.

8. Conecte-se com o INSTM e desative todos os jobs transferidos de INSTP

Neste exercício, você vai treinar a configuraçáo do banco de dadosAdventureworþs parao modo de operaçáo Alta Disponibilidade.

1. Conecte-se com o INSTM e execute o código a seguir:

ALTER DATABASE AdventureWorks SET PARTNER = 'TCP:,//<nome de seuservidor aqui>:5Q24' ;

2. Conecle-se com o INSTP e execute o código a seguir:

ALTER DATABASE Adventurel¡rlorks SET PARTNER = 'TCP://<nome de seuservidor aqu'i>: 5024' ;

ALTER DATABASE Adventurel¡lorks SET I^IITNESS = 'TCP://<nome de seuservidor aquì>:5024'i

NOTA Localizando endpoints de espelhamento de banco de dados

Se você não lembra os endereços de endpoint, pode recuperá-los usando dois mecanismosdiferentes, a escolher:

I Consulte sys.database_mirroring_endpoints em cada instância para obter o endereço doendpoint.

I lnicie o Configure Database Mirroring Security Wizard, primeiro clicando com o botãodireito do mouse no banco de dados principal e selecionando Tasks, Mirroring. Em se-guida, na caixa de diálogo Database Properties, clique em Configure Security e examinecada passo. Como você já criou os endpoints, o assistente recuperará informaçöes sobreeles automaticamente. Quando o assistente termina4 inserirá os endereços de endpointautomaticamente nos campos apropriados para configurar o espelhamento de bancode dados.

3. Verifique se o espelhamento de banco de dados está funcionando, observando se

o banco de dados AdventureWorks em INSTP está no estado Prínc[pal, Synchro-nized e se o banco de dados AdventureWorks em INSTM está no estado MírrorSynchronízed.

Page 508: Livro_SQL

NOTA Alternativa de GUI para configurar espelhamento de banco de dados

Você pode clicar com o botão direito do mouse no banco de dados AdventureWorks em INS-

TB selecionar a guia Mirroring e configurar uma sessão de espelhamento de banco de dadosusando a GUl.

Neste exercício, você vai criar um snapshot de banco de dados no espelho.

1. Conecte-se com o INSTM e execute o código a seguir:

Capítulo 15 r Espelhamento de Banco de Dados

CREATE DATABASE Adventurel¡lorksDS 0N

( NAME = AdventureWorks-Data, FILENAME ='C:\Arquivos de Programa\Mi crosoft SQL Server\MSSQLI-0.MSSQLSERVER\MSSQL\Data\Adventu reVrlo rks-data , ds ' )AS SNAPSH0T 0F Adventurel¡r/orks;

2. Verifique se o snapshot de banco de dados foi criado corretamente, executandocódigo a seguir:

USE Adventureh/orksDSGO

SELECT DepartmentID, Name, GroupName; ModifiedDateFROM HumanResources. Department ;

Resumo da lição

r Você deve configurar todos os bancos de dados que participam do espelhamentocom o modelo de recuperaçáo CompleÍo para garanlir que todas as transações se-jam aplicadas no espelho.

r Enño, você deve inicializar o espelho restaurando um backup, certificando-se deque a opçâo NORECOVERY esteja especificada.

t Como o espelhamento de banco de dados é responsável apenas por copiar o con-teúdo de um banco de dados no servidor que contém o espelho, você deve copiarseparadamente todos os outros objetos de servidor, como logins, servidores vincu-lados e jobs.

Revisão da lição

Responda as perguntas a seguir para testar seu conhecimento sobre aLiçã,o 2. As per-

guntas também estão disponíveis no CD do livro (em inglês) se você preferir revisálasem formato eletrônico.

507

NOTA Respostas

As respostas a essas perguntas e as explicaçöes das respostas estão na seção "Respostas" nofinal do livro.

Page 509: Livro_SQL

508 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

1. Quais dos passos a seguir sáo válidos para preparar um banco de dados paraparticipar de uma sessão de espelhamento? (Escolha todas as respostas que se

aplicam.)

A. Configurar a distribuição.

B. Fazer backup do banco de dados.

C. Restaurar o banco de dados cotRECOVERY.

D. Restaurar o banco de dados I¡ryNORECOVERY.

2. Que configuração de banco de dados êvâlida para espelhamento?

A. Modelo de recuperação Completo

B. Nível de compatibilidade 80

C. Somente leitura

D. Modelo de recuperação Registro em massa

3. Quais das seguintes são características do modo de operação Alta Disponibilidade?(Escolha todas as respostas que se aplicam.)

A. Transferência de dados assíncrona

B. Transferência de dados síncrona

C. Failover automático

D. Failover manual

Page 510: Livro_SQL

Lição 3: Projetando estratégias de failover e failbackAs soluções de alta disponibilidade náo sáo projetadas para evitar paralisações; elas sãoprojetadas para que seus sistemas voltem a ftcat online o mais rapidamente possÍvel.

Paru garantir um tempo de paralisação mínimo, os processos de failover e failback de-

vem ser documentados e orquestrados.

Após esta lição, você será capaz de:

t Projetar uma estratégia de teste para mudanças de role planejadas e não planejadas

Tempo estimado para a lição: 20 minutos

Capítulo L5 r Espelhamento de Banco de Dados

Projetando o failover de sessão de espelhamentoAs sessões de espelhamento de banco de dados ocorrem entre bancos de dados. Desse

modo, uma sessáo de espelhamento não considera transações entre bancos de dadosnem quaisquer objetos de servidor fora do banco de dados que está sendo espelhado.

Os aplicativos que enviam transações para vários bancos de dados em uma única ins-tância só preocupam quando os dados de um banco de dados dependem dos dados de

outro banco de dados (por exemplo, um banco de dados contendo clientes que esteja

logicamente vinculado a um banco de dados separado contendo pedidos desses clien-tes). Para bancos de dados vinculados logicamente, você precisa garaníft que todos eles

sejam espelhados com o mesmo modo de operação. Você também devefazer vigoraruma diretiva que exija que todos os bancos de dados sejam tratados como um grupoe que a failover seja feita como um grupo. Agrupando os bancos de dados, você pode

minimizar a possibilidade de ter dados que não sejam logicamente consistentes entreos bancos de dados.

Migrar logins e servidores vinculados é o passo mais importante que você deve dar paragaranrir que os aplicativos continuem funcionando após um failover. O SSIS tem umatarefa que você pode usar para migrar logins entre instâncias. Se você está migrandologins do SQL Server, o SSIS mantém as senhas em um estado criptogtafado durante atransferência para que a segurança não possa ser comprometida. Os servidores vincu-lados precisam ser recriados.

Se seu acesso de segurança é definido com contas do Microsoft Windows, nenhum tra-balho adicional é necessârio após um failover. Se seu acesso de segurança é definidocom logins do SQL Server, talvez seja preciso dar passos adicionais após um failover.

Quando você cria um login do SQL Server, é gerado um identificador de segurança(SID) fictício. Então, esse SID é usado para vincular o usuário de um banco de dadosao login de um servidor. Se você não recriar os logins do SQL Server na mesma ordemem que os criou no principal, oconerâ uma divergência entre o login e o usuário nobanco de dados, que poderá conceder permissões elevadas a um login. Nesse caso,

você precisa execvtaÍ ALTER LOGIN para fazer novo mapeamento dos logins. Contu-do, como o espelho está inacessível, você só pode executar esse passo depois que umfailover tiver ocorrido.

509

Page 511: Livro_SQL

510

Os outros objetos que você precisa recriar no espelho para garanlir failover completo ecorrcÍo para os aplicativos são jobs do SQL Server Agent, pacotes SSIS e mensagens de

erro personalizadas. Os jobs do SQL ServerAgent devem ser criados, mas são desativa-dos, pois não podem acessar um banco de dados de espelho.

Projetando o failback da sessão de espelhamentoO aspecto mais dificil de qualquer solução de alta disponibilidade é projetar uma estra-tégia de failback. Quando uma solução de disponibilidade faz o failover em um servidorsecundário, todas as transações sáo agora executadas no secundário. Para permitir que

os aplicativos retornem e se conectem no primário, você precisa aplicar a côpia atualdos dados, antes de colocar o banco de dados de novo em serviço.

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

MELHoRES pnÁncns Failback

Você implementou soluções de alta disponibilidade para garantir a máxima disponibilidadeem seu ambiente. O secundário tomou o comando do primário por causa de uma falha oude uma ação administrativa. A não ser que você seja obrigado a retornar o ambiente para oparceiro que falhou, depois que ele voltar a ficar online, não deve fazer isso. Os únicos motivospelos quais você deve ser obrigado a retornar são os seguintes:

I Política da empresa

I Degradação no desempenho ,

A política de uma empresa poderá impor que um servidor designado como primário sempredeva ser o primário quando estiver online. Você deve evitar esses tipos de política a todo custo,pois elas impöem uma restrição muito artificial para o pessoal do Tl e para a maneira de ge-renciar os sistemas. Se o primário e o secundário são equivalentes sob todos os aspectos (segu-

rança, desempenho, capacidade etc.), não importa qual servidor está processando pedidos. É

por isso que, se possível, você deve evitar o uso de "instalaçöes de recuperação de desastre" e,

em vez disso, chamá-las de "instalaçöes alternativas", para que a direção da empresa não tenteforçá-los a uma estrutura artificial.

Às vezes não é possível fazer com que o servidor primário e o secundário sejam equivalentes.O servidor secundário poderá ter menos recursos de hardware ou capacidade de armazena-mento limitada, o que poderá afetar as operações, mas ainda ser aceitável para a empresa,quando um desastre deixar o servidor primário offline. Se o desempenho é degradado no ser-vidor secundário, sua primeira tarefa é lazer o servidor primário voltar a ficar online e, então,retornar todos os aplicativos para o primário o mais rapidamente possível, para restabelecer as

métricas de desempenho normais.

o espelhamento de banco de dados elimina amaioria dos problemas de failback presen-

tes nas outras tecnologias. Você precisa considerar dois caminhos de failback diferen-tes: failback após um failover normal e failback após um failover forçado. Essas duasopções serão discutidas a seguir.

Failback após failover normalQuando o principal falha, o espelho é promovido, manual ou automaticamente. Depoisque o principal que falhou está novamente online, ele é rebaixado para espelho auloma-

Page 512: Livro_SQL

ticamente. O rebaixamenío automâÍico do principalpara espelho impede que os aplica-tivos se conectem com um banco de dados em um estado mais antigo.

Como o espelhamento mantém cada banco de dados dentro da sessáo em fileira cerrada,hâum caminho para sincronizar outravez, deformaincremental, o parceiro que falhou.Náo apenas um principal que falhou é rebaixado para espelho automaticamente, mastambém o fluxo de transaçáo inverte de direçáo automaticamente, para que o parceiroque falhou volte a ftcat atualizado com todas as transações.

No caso de um parceiro que falhou ter ficado offline por um período de tempo, poderiamser feifos backups de log de transação que removessem registros do log de transação.Como o parceiro que falhou agora esrâ em estado de recuperação, você pode aplicar ba-ckups de log de transaçáo para avançar o banco de dados no tempo. Assim que o parcei-ro que falhou for avançado no tempo suficientemente para que seu LSN seja abrangidopelo log no principal, o espelhamento de banco de dados poderâ contin:uar a enviar astransações restantes, para concluir o sincronismo do parceiro que falhou.

Paratornat esse novo sincronismo incremental o mais homogêneo possível, execute ospassos a seguir:

1. Faça uma pausa nos backups de log de transaçáo no principal.

2. Coloque o parceiro que falhou novamente online.

õ. Restaure todos os backups de 1og de transação extraídos desde a falha até o presen-

te, certificando-se de sempre especificar a opção NORECOVERY.

4. Depois que o principal começar a enviar transações paÍa o espelho, reinicie os ba-ckups de log de transação no principal.

5. Quando o principal e o espelho estiverem ovíravez completamente sincronizados,faça um failover normal na sessáo de espelhamento e conecte novamente os aplica-tivos com o principal.

Failback após failover forçadoUm failover forçado ocorre quando o principal falha enquanto a sessáo de espelha-mento está em um estado não sincronizado, fazendo com que as transações que foramefetivadas no principal se percam. Essa situação só é possível no modo de operação A,ltoDesempenho.

O failover para o modo de operaçáo AIto Desempenho é manual. Você deve executar o

comando a seguir a partir do espelho para fazer o failover da sessão:

ALTER DATABASE Adventureldorks SET PARTNER F0RCE_SERVICE_ALL0III_DATA_L0SS;

Conforme fica prontamente aparcnte a partír da opçáo ALTER DATABASE, um failoverforçado pode fazer com que transações sejam perdidas. Essa situaçáo pode criar umalacuna na sequência de LSN entre os dois parceiros na sessáo de espelhamento. Se oparceiro que falhou contém transações que não estão presentes no principal (espelhoanterior), o espelhamento de banco de dados náo pode voltar a sincronizar o parceiroque falhou. Se o parceiro que falhou não pode volfar a ser sincronizado, você deve re-

Capítulo 15 r Espelhamento de Banco de Dados

Page 513: Livro_SQL

51.2 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

mover a sessão de espelhamento e reinicializar o espelhamento do banco de dados. Você

pode remover uma sessão de espelhamento executando o comando a seguir:

ALTER DATABASE Adventureh/orks SET PARTNER OFF;

f t"rt" rápido

1. Como você. faz o failback de um failover forçado?

2. Quais objetos de servidor são sua principal preocupação no caso de um failo-ver?

Respostas

1. Se os parceiros estavam sincronizados no momento do failover, você pode

aplicar backups de log de transação para avançar o parceiro que falhou notempo e, em seguida, o espelhamento de banco de dados conclui o processo

de sincronismo. Se os parceiros não estavam sincronizados no momento dofailover, você precisará remover o espelhamento e reinicializar.

2. A instância que contém o banco de dados de espelho também deve ter todos os

logins presentes necessários para os aplicativos e usuários se conectarem no

banco de dados. Se os aplicativos usam servidores vinculados, eles tambémprecisam existir para evitar falhas de aplicativo. Outros objetos de servidor,como pacotes SSIS e jobs, náo sâo tão importantes durante o failover e geral-

mente podem ser tratados logo após um failover, depois que todos os aplicati-vos estiverem online.

PRÁTlcA Failover de uma sessão de espelhamento de banco dedados

Neste exercício, você vai lazer o failover da sessão de espelhamento que foi implemen-Lada na prâtica anterior.

1. Abra uma nova janela de consulta, conecte-se com o INSTP e execute o código aseguir:

ALTER DATABASE Adventurehlorks SET PARTNER FAILOVER;

2. Observe que agora o banco de dados AdventureWorks em INSTM está no principalrole.

NOTA Forçando um failover

A opção SET PARTNER FAILOVER só estará disponível se a sessão de espelhamento estiversincronizada, estiver operando no modo de operação Alta Disponibilidade e for executadaa partir do principal. Para forçar um failover para o modo de operação Alto Desempenho ouquando o principal está indisponível, você precisa executar AIIËR DATABASE AdventureWorksSET PART N ER FO RCE-SE RV I C E-ALLOW-DATA_LOSS.

Page 514: Livro_SQL

Resumo da lição

r O espelhamento de banco de dados pode cuidar do failover do principal para o es-

pelho, promover o espelho e rebaixar o parceiro que falhou automaticamente e, em

alguns casos, até rcalizar um novo sincronismo incremental automático. Contudo,essa capacidade não é aproveitada, a não ser que você garanta que os logins, os

servidores vinculados e outros objetos de suporte estejam presentes no espelho nomomento do failover.

r Você só deve realizar um failback se for imposto pela política da empresa ou se o

desempenho degradar após um failover.

Revisão da lição

Responda as perguntas a seguir para testar seu conhecimento sobre a Lição 3. As per-

guntas também estão disponíveis no CD do livro (em inglês) se você preferir revisá-lasem formato eletrônico.

Capítulo 15 r Espelhamento de Banco de Dados

NOTA Respostas

As respostas a essas perguntas e as explicações das respostas estão na seção "Respostas" nofinal do livro.

1. Quais das seguintes são características do modo de operação Alto Desempenho?(Escolha todas as respostas que se aplicam. Cada respostaformauma solução com-pleta.¡

A. Transferência de dados assíncrona

B. Transferência de dados síncrona

C. Failover automático

D. Failover manual

2. guaisdas seguintes são características do modo de operação Alta Segurança? (Esco-

lha todas as respostas que se aplicam. Cada resposta forma uma soluçáo completa.)

A. Transferência de dados assíncrona

B. Transferência de dados síncrona

C. Failover automático

D. Failover manual

Page 515: Livro_SQL

Revisão do capítulo

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Para reforçar o que aprendeu neste capítulo, você pode:

I Ler o resumo do capítulo.

r Completar o cenário de caso. Esse cenário aborda situações reais que envolvem ostópicos deste capítulo e solicita que você crie uma solução.

r Completar as práticas sugeridas.

I Fazer um teste.

Resumo do capítulor O modo de operaçáo Alta Disponibilidade garante que as transações sejam redun-

dantes entre os servidores, enquanto também tem a capacidade de fazer failoverautomaticamente.

r O modo de operaçãoAlta SegurançagaranÍe que as transações sejam redundantesentre os servidores, mas exige failover manual.

r O modo de operação Alto Desempenho não garante failover nas transações e tam-bém exige failover manual.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando oglossário no final do livro.

r Espelhamento de banco de dados

r Role de espelhamento de banco de dados

r Sessão de espelhamento de banco de dados

I Parceiro de banco de dados

r Endpoint

r Modo de operação Alta Disponibilidade

r Modo de operaçáo Alto Desempenho

r Modo de operação Alta Segurança

r Espelho

I Failover de espelho

r Modo de operação

r Principal

I Redirecionamento transparente de clientes

r Servidor de witness (testemunha)

r Examinar a lista de termos-chave introduzidos neste capítulo.

Page 516: Livro_SQL

Cenário de caso

No cenário de caso a seguir, você vai aplicar o que aprendeu sobre espelhamento de

banco de dados. As respostas dessas questões podem ser encontradas na seçáo "Res-

postas", no final deste livro.

Cenário de caso: Planejamento para alta disponibilidade

Histórico

Visõo geral do empreso

A Margie's Travel oferece serviços de viagem em um único escritóriolocalizado em San

Diego. Os clientes podem se encontrar com um agente no escritório de San Diego ou

lazet preparativos de viagem através do site da empresa.

Declarações de problema

Com a inclusáo de um novo catálogo de produtos, o site está com problemas de

estabilidade. Os clientes também sáo impedidos de adquirir produtos ou serviçosem vários momentos durante o dia, quando estão sendo feitas alterações nos dados

subjacentes.

A empresa acabou de dispensar a fuma de consultoria responsável pelo desenvolvi-mento e gerenciamento do site e de todos os outros aplicativos da empresa, porque

náo conseguiu fornecer nenhuma disponibilidade para os sistemas fundamentais para

o negócio.

Mudanças planejadas

o superintendente de tecnologia (CTO) recentemente contratado foi incumbido de imple-mentar alta disponibilidade para todos os sistemas fundamentais para o negócio. O CTO

acabou de contratar um DBA e um administrador de sistemas para ajudar nessa tarefa,

assim como para gerenciar as operações diárias.

Ambiente de dados existenteExistem 11 bancos de dados dentro do ambiente, como mostrado naTabela 15-2.

Capítulo 15 I Espelhamento de Banco de Dados 515

Tabela 15-2 Bancos de dados dentro da Margie's Travel

Orders

Customers

CreditCqrds

Employee

HumonResources Armazena todos os documentos de recursos humanos (RH), 300 MB

assim como informaçöes de salário de funcionário'

Armazena todos os pedidos feitos pelos clientes.

Armazena todas as informaçöes pessoais relacionadas a um L5 GB

cliente.

Products

Armazena informaçöes de cartão de crédito de cliente.

Armazena informaçöes relacionadas a todos os funcionários. 50 MB

Armazena os produtos que podem ser comprados no site.

50 GB

2OO MB

25 GB

(continuo)

Page 517: Livro_SQL

516 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Tabefa 15-2 Bancos de dados dentro da Margie's Travel þontinuação)

Flights

Cruises

CorRental

Excursions

Armazena os voos que foram reservados pelos clientes.

Armazena os cruzeiros que foram reservados pelos clientes.

Admin

Armazena os aluguéis de carro que foram reservados pelosclíentes.

o ambiente tem um único servidor da web, chamado wEB1, e um único servidor debanco de dados, chamado SQL1. Todos os servidores estão sendo executados no Win-dows Server 2003 e SQL1 está executando SeL Server 2008.

SQL1 tem um gabinete de atmazenamento externo conectado a uma controladora RAID(redundant array of inexpensive disks) com uma reserva capaz de implementar R {ID 0,R{ID 1 e RAID 5. Atualmente, o conjunto inteiro está configurado como um único RAID0. O armazenamento atual estâ com apenas 7Oo/o da capacidade.

Uma unidade de fita está conectada em \,VEB 1 e em SQL1, mas as unidades de fita nun-ca foram usadas.

Atualmente, SQL1 e \MEB1 estão localizados no cubículo adjacente ao consultor dispensa-do anteriormente. Todos os aplicativos em \MEB1 foram escritos com ASP ou ColdFusion.

Ambiente proposto

O CTO reservou uma parte do orçamento para comprar mais quatro servidores confi-gurados com Windows Server 2003 e SQL Server 2008. Todo hardware seút capaz desuportar cluster.

os dados dentro dos bancos de dados products, customers, ord,ers, Flíghts, cruises,Excursíons e CarRental podem ser expostos na Internet por meio de aplicativos em exe-cução em WEB1. Todos os outros bancos de dados devem ficar alrâs do firewall e seracessíveis somente para usuários autenticados no domínio corporativo.

Uma nova SAN (Storage Area Networþ está sendo implementad apara atmazenamentode banco de dados, contendo espaço em unidade suficiente para todos os bancos dedados. cada um dos 20 números de unidade lógica (LUNs) usados na sAN está configu-rado em uma configunçã,o de faixa de espelhos, com quatro discos em cada conjuntode espelho.

Requisitos empresar¡a¡sEstá em vigor uma solução de curto prazo que permite ao sistema ser completamenterecuperado de qualquer paralisação dentro de dois dias úteis, com uma perda de dados

Armazena as excursöes que foram reservadas pelos clientes. 2 GBUma excursão é definida como algo que não é voo, cruzeiro,produto ou aluguel de carro.

Um banco de dados utilitário para uso dos DBAs, queatualmente está vazio.

2GB

1- GB

1GB

12 GB

Page 518: Livro_SQL

máxima de uma hora. No caso de um desastre maior, a empresa pode sobreviver à perda

de até dois dias de dados.

Uma janela de manutençáo entre meia-noite e O8h00min de domingo está disponívelpara se fazer quaisquer alterações.

Uma solução de prazo mais longo precisa ser criada para prcleger a empresa de falhas

de hardware, com uma paralisação máxima exigida de menos de um minuto.

Requisitos técnicosOs bancos de dados Orders, Customers e CredítCards precisam seÍ armazenados na mes-

ma instância do SQL Server e ter failover em conjunto, pois todos os três bancos de

dados estão ligados.

Todos os bancos de dados relacionados ao RH devem ter segurança muito forte, com

acesso somente para o diretor de RH. Todos os dados de HR devem ser criptografados

dentro do banco de dados, assim como em qualquer ovÍrapante da rede.

O departamento de marketing precisa construir relatórios com todos os dados de cliente

e pedido, junto com os produtos ou serviços associados que foram reservados, para

desenvolver novas campanhas de marketing e ofertas de produto. Toda análise exige

dados quase em tempo real.

Todos os bancos de dados são obrigados a manter 99,92o/o de disponibilidade durante

um ano inteiro. Um mínimo de intervençáo dos administradores é necessário para se

recuperar de uma paralisação. Os clientes que estejam usando o site não podern saber

quando ocorre um failover.

1. O CTO quer localizar uma instalação secundária distante 1 60 km dos servidores do

banco de dados primário. O servidor de banco de dados da instalaçáo secundária

executarâ SQL Server 2OO8 Standard. Que tecnologia você pode usar pan satisfazetos requisitos empresariais no caso da perda do servidor da instalação primária?

A. Cluster de failover

B. Espelhamento de banco de dados no modo de operação Alta Segurança

C. Espelhamento de banco de dados no modo de operaçâo Alto Desempenho

D. Replicação

2, As aTterações no catêtlogo de produtos só ocorrem vmavez por dia, durante umajanela de manutenção programada. Como o CTO quer garantir que o calêLlogo de

produtos seja redundante em uma instalação secundária que está sendo considera-

da, que tecnologia você pode implantar como soluçáo de disponibilidade?

A. Espelhamento de banco de dados no modo de operação Alto Desempenho

B. Espelhamento de banco de dados no modo de operaçáo Alta Disponibilidade

C. Replicação

D. Log shipping

Capítulo 15 r Espelhamento de Banco de Dados 5t7

Page 519: Livro_SQL

518 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

3. Que soluçáo tecnológica você pode implantar pan satisfazer as necessidades dodepartamento de marketing?

A. Log shipping com modo de espera

B. Cluster de failover

C. Replicaçáo transacional com assinantes de atualizaçâo enfileirados

D. Replicaçáo de snapshots

4. Que tecnologia é a melhor solução para os bancos de dados Orders , Customers, Pro-ducts eCredítcards?

A. Cluster de failover

B. Espelhamento de banco de dados no modo de operação Alta Disponibilidade

C. Replicaçao transacional com assinantes de atualízação enfileirados

D. Log shipping

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capîÍulo, complete as tarefasa seguir.

Estabelecendo espelhamento de banco de dadosPara se familiarizar com o espelhamento de banco de dados, pratique a criação de end-points e a configuração de espelhamento de banco de dados - incluindo os modos deoperação. Compare os estados dentro da sessáo de espelhamento à medida que você colo-ca vários componentes offline e, entáo, pratique o failover automático e manual.

I Exercício 1 Crie endpoints de espelhamento de banco de dados para um princi-pal, um espelho e uma witness (testemunha), usando dois métodos diferentes: oConfigure Database Mirroring Security Wizard e os comandos Transact-SQl (T-SQL)CREATE E NDPOTN T/ÁLTE R E ND PO TN T.

r Exercício 2 Configure espelhamento de banco de dados no modo de operação AltaDisponibilidade usando o banco de dadosAdventureWorþs.

I Exercício 3 Coloque a witness (testemunha) offline e observe o estado do bancode dados de espelho. Coloque o espelho offline e observe o efeito no banco de dadosprincipal. Coloque o espelho e a witness (testemunha) novamente online e observeos vários estados dentro do sistema.

r Exercício 4 Altere o modo de operaçáo para Alto Desempenho e repita o Exercício 3.

I Exercício 5 Altere o modo de operação para Alta Segurança e repita o ExercÍcio 3.

r Exercício 6 Faça um failover automático no modo de operação Alta Disponibilida-de, encerrando a instância que contém o principal, enquanto o espelho e a witness(testemunha) estáo online.

Page 520: Livro_SQL

I Exercício 7 lnicíeum failover manual em cada um dos modos de operação, usan-

do dois métodos diferentes: sSMS e T-sQL.

Criando um snapshot de banco de dados em um espelhopara esta tarefa, pratique a uiaçâo de um snapshot de banco de dados que você pode

usar para fazer relatórios.

r Exercício 1 Crie um snapshot no banco de dados de espelho. Elimine e recrie osnapshot de banco de dados ou crie uma série de snapshots de banco de dados para

ver como os dados mudam - e quáo rapidamente mudam - no espelho, depen-

dendo do modo de operaçáo.

Capítulo 15 I Espelhamento de Banco de Dados 519

Faça um testeOs testes do CD deste livro (em inglês) oferecem muitas opções. Você pode fazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-licação 70-432. É possível configurar o teste para que ele simule a experiência de fazer

um exame de certificação ou configurâ-7o no modo de estudo (study mode) para ver as

respostas corretas e explicações depois de cada questáo.

MA|S TNFORMAçöES Testes

Para mais detalhes sobre todas as opçöes de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

Page 521: Livro_SQL
Page 522: Livro_SQL

Capítulo 1-6

hog ship

o log shipping proporciona um modo de manter um servidor secundário de forma auto-matizadausando um encadeamento de backups de log de transação. Este capítulo expli-ca a configuraçãobâsica do 1og shipping, junto com considerações sobre a configuraçáodo failover e do failback dentro de um ambiente de log shipping.

MAls tNFoRMnçÕrs Backup e restauração

Para obter mais informaçöes sobre backup e restauração, consulte o Capítulo 9, "Fazendo ba-ckup e restaurando um banco de dados".

Objetivo de exame neste capítulo:

I Implementar Togshipping.

Lições deste capítulo:

r Liçáo 1: Visão geral do log shipping 522

zZ7;/tffi7

r Liçáo 2:IniciaTizando um log shipping 527

r Lçáo 3: Projetando estratégias de failover e failback 538

Antes de começarPara fazer as lições deste capítulo, você deve ter:

r Pelo menos um computador com Microsoft SQL Server 2008 ediçãto Standard, En-terprise ou Developer instalado

I O banco de dados AdventureWorþs instalado em um dos computadores

MArs rNFoRMnçöes

E possível implementar log shipping entre dois bancos de dados dentro da mesma instânciado SQL Server. Contudo, essa não é uma prática recomendada para ambientes de produção,pois se você perder a instância, terá perdido seus bancos de dados primário e de reserva. Umaconfiguração de log shipping confinada em uma única instância serve apenas para teste eaprendizado.

Page 523: Livro_SQL

522

Lição 1: Visão geral do log shipping

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

O 1og shipping opera em nível de banco de dados entre um banco de dados primário e

um banco de dados secundário. O iog shipping também permite configurar um servidormonitor que pode verificar a vitalidade da sessáo de log shipping e enviar notificações

sobre quaisquer erros. Esta lição fornece uma visáo geralbâsica dos componentes do

Iog shipping e seus roles em uma arquitetura de log shipping.

Após esta lição, você será capaz de:

I Especificar o servidor primário e o servidor secundário

Tempo estimado para a lição: 20 minutos

Cenários de log shippingVocê pode apTicar log shipping de várias maneiras dentro de seu ambiente.

Descarga de atividade de relatórioVocê pode usar log shipping para manter um servidor de relatórios . Em vez de restau-rar backups de log de transação com a opçáo No Recovery Mode, você pode especificarStandby Mode. Os bancos de dados restaurados com Standby Mode permitem conexões,

assim como a execuçáo de instruções SELECT.

As operações de restauração não sáo permitidas enquanto existirem conexões com obanco de dados. Para minimizar o tempo de paralisação, o banco de dados secundárioprecisa ter muito pouca latência com o banco de dados primário. Esses requisitos confli-tantes eliminam Standby Mode como opçáo de alta disponibilidade.

Inicialização de espelhamento de banco de dadosVocê inicializa espelhamento de banco de dados a partir de backups do principal. Depoisque todos os backups do principal são restaurados e o principal e o espelho são sincro-nizados, iniciar a sessão de espelhamento de banco de dados exige apenas um ou dois

segundos. Um cenário muito comum parainicialização de uma sessáo de espelhamentode banco de dados éutilizar 1og shipping para que o principal e o espelho fiquem muitopróximos no tempo, de modo que sejam necessários poucos segundos para que a sessáo

de espelhamento de banco de dados esteja online. Isso minimiza o tempo necessáriopara iniciar o espelhamento de banco de dados antes que os aplicativos possam conti-nuar a processar transações.

Atualização de versöes ou migração para uma nova plataformaUma atualização lado alado é muito parecida com a migração para uma nova plataforma.

Nos dois casos, você constrói a nova instância e, em seguida, move os bancos de dados. Se

precisar minimizar o tempo de paralisaçáo de aplicativos, você pode usar log shipping para

aplicar um encadeamento de logs de transaçáo na nova instância. Então, será necessária

apenas uma breve parada dos aplicativos, enquanto os backups de log de transaçáo restan-

tes sáo aplicados, antes que os aplicativos possam ser trocados para a nova instância.

Page 524: Livro_SQL

Solução de disponibilidade de primário ou secundárioVocê pode usar log shipping como a principal opçáo para manter um ou mais bancosde dados secundários para os quais os aplicativos podem ser trocados, no caso de umaparalisação do banco de dados primário. Mais comumente, o log shipping é implantadacom failover cluster ou espelhamento de banco de dados para fornecer um mecanismode failover secundário.

cUlDADO Abrangência do log shipping

A abrangência do log shipping é limitada a um banco de dados. Portanto, o log shipping nãoleva em conta quaisquer dependências entre bancos de dados que possam existir. Por exemplo,se você tem um banco de dados que contém clientes e outro que contém pedidos desses clientes,seus aplicativos estão mantendo a integridade dos dados pelo modo como as transaçöes são ma-nipuladas. Contudo, o log shipping viola essa integridade, pois ela funciona usando backups delog de transação e o SQL Server não permite transaçöes entre vários bancos de dados. É possívelque, mesmo que você tivesse os bancos de dados de clientes e pedidos participando das sessões

de log shipping com backups e restaurações operando no mesmo intervalo, na recuperação, exis-tissem pedidos sem um cliente correspondente ou clientes sem todos os seus pedidos. Como re-gra, se você tem um ambiente configurado que o impede de usar chaves estrangeiras para impora integridade referencial (como quando coloca clientes e pedidos em bancos de dados separados,em vez de tabelas separadas dentro do mesmo banco de dados), o SQL Server não pode garantirque os dados permaneçam vinculados entre os bancos de dados.

capítulo 16 r Log Shipping

Componentes do log shippingOs componentes básicos do log shipping estão mostrados na Figura 16-1.

Primário

&a

Banco dedados de usuário

523

,/ 'ug \ MonitorIOmsdb

Figura 16-1 Componentes do log shipping.

Secundário

*

Page 525: Livro_SQL

524 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Banco de dados pr¡már¡oO banco de dados prímórío é acessível para aplicativos e aceita transações. Backupsde log de transação sáo extraídos periodicamente e copiados no servidor que contém o

banco de dados secundário.

Banco de dados secundár¡oO banco de dados secundórío, também referido como reservr, normalmente é inaces-sível e os backups de log de transaçáo do banco de dadoS primário são restauradoscontinuamente. o banco de dados secundário pode estar em dois modos diferentes:Standby Mode ou No Recovery Mode. Quando o banco de dados secundário está emStandbyMode, os usuários podem se conectar e executar instruções SELECT. Quandoo banco de dados secundário está em No Recovery Mode, os usuários náo podem se

conectar. Em um ou outro modo, você pode reslaurar logs de transação no banco dedados secundário. Você não pode restaurar logs de transaçáo quando usuários estáoconectados no banco de dados; portanto, você náo deve usar Standby Mode para ar-quiteturas de alta disponibilidade.

Servidor monitorO servidor monitor, que é opcional dentro de uma arquitetura de log shipping, contémum conjunto de jobs que enviam alertas quando é detectado que a sessáo de log ship-ping está fora de sincronismo.

NOTA Convençöes de terminologia

O log shipping opera entre bancos de dados; portanto, o servidor primário e o servidorsecundário não existem realmente. É totalmente possível fazer log shipping de um bancode dados do ServidorA para o ServidorB e, então, fazer log shipping de um banco de dadosdiferente do ServidorB para o ServidorA. Quando nos referimos a um primário ou servidorprimório, estamos nos referindo especificamente ao servidor com SQL Server que contém obanco de dados primário dentro de uma sessão de log shipping em particular. Quando nosreferimos a um secundário ou servidor secundário, estamos nos referindo especificamente aoservidor com SQL Server que contém o banco de dados secundário dentro de uma sessão

de log shipping em particular. Quando nos referimos a um reserva ou servidor de reserva,estamos nos referindo especificamente ao servidor com SQL Server que contém o bancode dados secundário dentro de uma sessão de log shipping em particular. Por brevidade,usaremos os termos primário e secundório/reserva no restante deste capítulo. Lembre-se deque esses termos se referem a um banco de dados em particular e qualquer outro objetoreferenciado por um servidor primário ou por um servidor secundário se aplica à instânciaque contém o banco de dados específico.

t'teste rápido

1. Quais são os dois modos em que um servidor de reserva pode estar?

2. Quais são os três componentes do log shipping e quais sáo seus objetivos?

Page 526: Livro_SQL

Respostas

1. Standby Mode e No Recovery Mode.

2. Obanco de dados primário fica acessível e aceita transações. O banco de da-

dos secundário tem um encadeamento contínuo de logs de transaçáo aplicadopara mantê-lo atualizado com o primário. Aínstância do monítor envia alet-tas quando a sessão de log shipping está fora de sincronismo.

Tipos de log shippingVocê pode lazerlogshipping usando os componentes internos do SQL Server ou codifican-do toda alógicade forma personalizada. Os métodos são usados amplamente no setor.

Os componentes internos de log shipping consistem em um conjunto de procedimen-

tos armazenados (stored procedures) e tabelas. Os procedimenïos armazenados (storedprocedures) são usados para configurar os jobs que fazem loda a tarefa em uma arqui-tetura de log shipping, assim como mantêm as entradas nas tabelas de log shipping.As tabelas de log shipping sáo simplesmente um repositório de dados que monitora aconflguração e o estado operacional do ambiente de log shipping.

As soluções de código personalizado operam de acordo com princípios muito parecidoscom o código incorporado distribuído pela Microsoft. o log shipping é, muito simples-mente, a automação da cópia e restauração contínua de backups de log de transação.As soluções de código personalizado geralmente contêm procedimentos armazenados(stored procedures) que executam o processo de backup e restauração. Então, jobs do

SQL Server Agent são criados manualmente pan executar a procedure, para lazer ba-ckup dos logs de transação rotineiramenÍe, copiar os backups em um ou mais servidoressecundários e executar o procedimento aÍmazenado (stored procedure) para restaurar os

backups de log de lransaçâo em ordem no secundário.

Capítulo 16 r Log Shipping

G) orcn DE ExAMEv

O log shipping conta com backups de log de transação. Se o modelo de recuperação for mu-dado para Simples, o log shipping parará de funcionar. Analogamente, executar um comandoBACKUP LOG . . . WITH TRUNCATE-ONLY Também interromperá o log shipping.

Resumo da liçãor O log shipping é uma maneira automatizada de aplicar um encadeamento contínuo

de backups de log de transação em um ou mais servidores de reserva.

r O banco de dados primário fica online e aceita transações.

r O banco de dados secundário tem um encadeamento contínuo de backups de log de

transação aplicado nele.

r O servidor monitor é um componente opcional que envia alertas quando o bancode dados secundário fica muito fora de sincronismo com relação ao banco de dadosprimário.

Page 527: Livro_SQL

526 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Revisão da lição

Responda aperglrftaaseguir paratestarseuconhecimentosobre aLiçâo l.Aperguntatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. Qual das seguintes é um role válido para log shipping?

A. Principal

B. Primário

C. Distribuidor

D. Reserva

Page 528: Livro_SQL

Lição 2: lnicializando um log shippingO log shipping opera aplicando no banco de dados secundário um encadeamento contí-nuo de backups de 1og de transação, extraído do banco de dados primário. Para garantirque os backups de log de transaçáo possam ser aplicados no banco de dados secundá-rio, você deve certificar-se de que os bancos de dados primário e secundário estejamsincronizados. Esta lição explica o processo exigido parainiciaTizarnma sessão de logshipping.

Após esta lição, você será capaz de:

I lnicializar um log shipping

Tempo estimado para a lição: 20 minutos

lnicialização de log shippingFazer uma arquitetura de log shipping funcionar é um processo muito simples que nãoacaffeta nenhum tempo de paralisação no banco de dados primário.

Capítulo L6 r Log Shipping

NOTA Componentes internos ou código personalizado

A única diferença entre usar log shipping com código personalizado e usar os componentesinternos que acompanham o SQL Server envolve variações relacionadas aos requisitos empre-sariais. O log shipping com código personalizado geralmente leva em conta requisitos adicio-nais de um ambiente empresarial específico. Os dois métodos operam segundo os mesmosprincípios: restaurando logs de transação continuamente em um banco de dados secundário.Para símplificar a explicação do log shipping, dedicamos as duas liçöes restantes deste capítulounicamente aos componentes internos que acompanham o SQL Server 2008.

527

O processo básico de inicialização de log shipping é o seguinte:

l. Criat um compartilhamento no primário e no secundário, pois os backups precisamser acessados entre os servidores.

2. Criar jobs para fazer backtp de logs de transaçáo, copiar logs no secundário e res-laúrar os logs.

3. Restaurar um backup completo no banco de dados secundário.

4. Restaurar todos os logs de transação subsequentes.

5. Iniciar jobs para avtomafizar a restauração dos logs.

6. Copiar todos os objetos em nível de instância dos quais o banco de dados secundá-rio depende para atender os aplicativos.

Page 529: Livro_SQL

s28 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

cUlDADo SQL Server Agent

O log shipping conta com a execução de jobs pelo serviço SQL Server Agent. Se o serviço SQL

Server Agent não estiver em execução, o log shipping não funcionará. Se osjobs do log ship-ping estiverem desativados ou não executarem, o log shipping não funcionará.

Criando jobsExistem duas ferramentas para criar os jobs usados para executar log shipping: Micro-soft SgL Server Management Studio (SSMS) ou Transact-SQl.

MELHoRES PRÁTlcAs Potencializando oSSMS

O SSMS fornece uma interface única para configurar todos os componentes do log shipping.Embora a interface possa fazer toda a configuração, a maioria dos administradores de bancode dados (DBAs) prefere usar Transact-SQl para configurar log shipping. Felizmente, vocêpode usar o SSMS para construir a confíguração do log shipping e gerar um script para a im-plementação.

Três jobs são criados quando você conflgura 1og shipping:

r O job de backup

I O job de cópia

r O job de restauraçáo

Ojob de backup é sempre executado no primário. Ojob de restauração é sempre execu-

tado no secundário. Ojob de cópta pode ser executado no primário ou no secundário.

Normalmente, o job de cópiatambém é configurado para executar no secundário.

MELHoRES PRÁTlcAs Exposição à perda de dados

A regra geral para exposição à perda de dados é que ela deve ser duas vezes o intervalo dos

backups de log de transação. Por exemplo, se os backups de log de transação são executadosa cada cinco minutos, considera-se que a exposição à perda de dados dentro de um ambien-te de log shipping é de l-0 minutos. Esse intervalo leva em conta o tempo que demora para

concluir um backup de log de transação e copiá-lo no secundário. Em sistemas que têm umvolume de transação muito alto, pode parecer que os backups de log de transação ocorremquase continuamente, pois a conclusão de um backup pode demorar um tempo quase igualao intervalo agendado para ele.

Restaurando backupsComo o log shipping conta com backups de log de íransaçáo, você deve primeiro restau-rar um backup completo do banco de dados no secundário. O banco de dados não pode

ser recuperado para ser capaz de restaurar logs de transação adicionais.

Page 530: Livro_SQL

Durante a configuração do log shipping, você pode optar por criar um backup completoimediatamente, copiáJo no secundário e rcsÍ.awát-lo, antes que o log shipping continuecom os backups de log de transação adicionais.

MELI{ORES PRÁTICAS Restaurando um backup completo durante a configuração

Geralmente não é recomendado fazer o log shipping gerar um backup completo durante a

configuração da sessão. lsso pode ter um impacto muito grande sobre um ambiente existente,particularmente se você tiver bancos de dados com mais de cerca de 1"0 gigabytes (GB) detamanho. Quando você configurar o log shipping, já existirão backups. (Note que você sempredeve ter backups de seus bancos de dados.) Para inicializar o log shipping em um ambiente deprodução típico, geralmente você segue os passos descritos nesta seção.

O processo de inicialização de 1og shipping é o seguinte:

1. Copiar o último backup completo no secundário e restaurar, deixando o banco dedados em No Recovery Mode ou Standby Mode.

2. Copiar e restaurar o último backup diferencial no secundário, deixando o banco dedados em No Recovery Mode ou Standby Mode.

3. Copiare restaurar todos os backups de log de transação desde o último diferencial,deixando o banco de dados em No Recovery Mode ou Standby Mode.

4. Desativar o job existen te para fazerbacklp de logs de transação.

5. Copiar e restaurar todos os backups de log de transação adicionais no secundário.

6. Iniciar o log shipping.

Capítulo 16 r Log Shipping

MELHORES PRATICAS

Esse processo garante que você minimize o tempo necessário para inicializar o log shipping;não tendo que esperar que outro backup completo termine. Ele também garante que vocêminimize o espaço consumido em disco.

O 1og shipping conta com um encadeamento contínuo de backups de log de transaçáosendo aplicados no secundário. Você deve tomar muito cuidado ao configurar o job debackup de log de transaçáo. o job de backup paralogshipping substitui qualquer ba-ckup de log de transaçáo existente no banco de dados primário. Se você tiver mais deum backup de log de transação em execução no banco de dados primário, o log shippingparurâ de funcionar muito rapidamente.

CUIDADO Planos de manutenção

É muito comum configurar planos de manutenção paraÍazer backup dos bancos de dados. Osplanos de manutenção geralmente especificam que deve ser feito o backup de todos os bancosde dados de usuário, assim um administrador não precisa se preocupar com a reconfiguraçãodos jobs de manutenção quando bancos de dados forem adicionados ou removidos. A maioriados planos de manutenção criados incluirá o banco de dados no qual você acabou de configurar

Page 531: Livro_SQL

530 Kit de Treinamento MCTS (ExameTO-432): Microsoft SQL Server 2008

o log shipping, o que resulta em vários backups de log de transação sendo executados no bancode dados primário. O plano de manutenção cria um conjunto de backups de log de transação e

osjobs de log shipping criam outro. Cada conjunto é apenas parte do que precisa ser restaurado.t,E necessária a combinação dos dois conjuntos de backups para garantir que o banco de dadosfique atualizado, pois cada backup de log de transação contém somente os dados que muda-ram desde o último backup de log de transação. Antes de configurar o log shipping, você devealterar quaisquer planos de manutenção que façam backups de log de transação, para excluir obanco de dados primário. Os backups completos e diferenciais não afetam o log shipping.

Cópia de objetos em nível de instânciaO log shipping cuida apenas do conteúdo do banco de dados. Contudo, um banco de

dados náo pode permanecer sozinho e ainda permitir que os aplicativos acessem dados.

Os objetos em nível de instância existentes sáo necessários para que um aplicativo fun-cione, caso você precise fazet falJover no secundário.

Os objetos em nível de instância mais comuns que você precisa copiar no secundárioincluem os seguintes:

r Objetos de segurança

I Servidoresvinculados

r Pacotes SSIS (SQL Server Integration Services)

r Endpoints

r Objetos do SQL ServerAgent

r Triggers DDL (linguagem de deflniçáo de dados) em nível de instância

r Replicaçáo

Se os dados dentro de um banco de dados são criptografados, você precisa fazetbackupda chave mestra de banco de dados no primário e ÍeslavraÍ no secundário.

Certiflcados podem ser usados pata criptografar dados e conceder acesso aos aplicativose também para fornecer criptografia (em conjunto com a chave mestra de banco de da-dos). Os certificados utilizados com o banco de dados precisam ser criados no servidorsecundário.

O acesso ao banco de dados também é controlado por meio de logins que podem ser loginsdo SQL Server ou logins/grupos do Microsoft Windows. Cada login criado tem um identi-ficador de segurança (SID) armazenado dentro da instância. Então, esse SID é associadoa um usuário no banco de dados paragarantir o acesso aos dados e aos objetos. O SID ar-

mazenado para um login ou para um grupo do Windows é o SID real atribuído pelo Win-dows, o qual ê, globalmente exclusivo para o usuário e passado dentro da infraestruturade segurança do Windows para fornecer acesso por meio de login ao servidor com SQL

Server. O SID associado a um login do SQL Server é gendo de forma local no SQL Server,

com base na ordem em que os logins do SQL Server foram criados, e não é garantido que

seja globalmente exclusivo. Embora todos os logins usados para conceder acesso aoban-co de dados secundário precisem ser copiados no secundário, você precisa saber que o SID

de um login do SQL Server pode náo ser mapeado corretamente no banco de dados.

Page 532: Livro_SQL

(D orcn DE ExAME

- O SSIS tem uma tarefa que você pode usar para transferir logins de uma instância para outra.

NOTA Fazendo novo mapeamento de usuários

Para fazer corretamente um novo mapeamento de um usuário do banco de dados com um lo-gin do SQL Servel você precisa executar o comando A LTER LOGIN depois que o banco de da-dos secundário estiver online. Os logins do Windows não precisam sofrer novo mapeamento,pois o SID é globalmente exclusivo e é sempre mapeado corretamente.

Os servidores vinculados têm dois componentes que você precisa conhecer. O servidorvinculado pode exigir drivers ODBC (Open Database Connectivity) ou provedores de OLEDB (Object Linking and Embedded Databases) que náo sáo caruegados no secundário.Um login e uma senha também podem ser incorporados na definição do servidor vincu-lado. Você precisa instalar os drivers ODBC ou provedores de OLE DB exigidos por umservidor vinculado. O servidor vinculado tambêm precisa ser recriado com as creden-ciais de login corretas.

Os pacotes SSIS são geralmente usados para carregar ou extrair dados de um bancode dados. Os pacotes SSIS que dependem do banco de dados primário precisam serrecriados no secundário. Tome cuidado para garaîtir que as interdependências sejameliminadas desses pacotes. Por exemplo, você poderia ter um pacote SSIS que extraísseou carregasse dados emDatabasel,Database2 eDatabase7. Se somente Database2 es-tivesse participando do log shipping, o pacote SSIS poderia falhar, caso fosse copiado nosecundário. Nesse caso, você precisariaparametrizat as conexões do SQL Server dentrodo pacote SSIS para isolar o nome do servidor.

Endpoints são usados para conlrolar o acesso a vários recursos dentro de uma instânciaou de um banco de dados. Os endpoints utilizados com o banco de dados primário preci-sam ser recriados no secundário. Para controlar o acesso ao secundário, cadaum dessesendpoints deve ser confïgurado com SIATE:STOPPED.

O SQL ServerAgent tem vários objetos quetalvez sejam necessários no secundário. Osjobs que dependem do banco de dados primário precisam ser recriados no secundário.Cada um desses jobs deve ser desativado para se garantir que não sejam executados. Sevocê tiver categorias de job, agendas de job, operadores ou alertas configurados, que es-tejam associados ao banco de dados primário, precisará recúar cada um desses objetosno secundário.

As triggers de DDL podem ser criadas em nível de instância, assim como em nível debanco de dados. As triggers de DDL em nível de banco de dados já existem no secun-dário, pois fazem parte do banco de dados. Contudo, as triggers de DDL em nível deinstância precisam ser recriadas no secundário.

Um banco de dados primário pode participar como publicador ou como assinante na re-plicaçáo. A configuração da replicaçáo codifica diretamente os nomes da instância e dobanco de dados do publicador, do assinante e do distribuidor. Embora o nome do bancode dados normalmente seja o mesmo no secundário, o nome da instância é diferente.Mesmo que todos os objetos da replicação já existam dentro do banco de dados secun-

Capítulo 16 I Log Shipping

Page 533: Livro_SQL

532 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

dário, eles não são utilizâveis. Ao fazer failover no secundário, você precisa planejar areconfiguraçáo de sua arquitetura de replicação depois que o secundário estiver online.

MAISINFORMAçöES Replicação

Para obter mais informaçöes sobre replicação, consulte o Capítulo 1-7, "Replicação".

Os objetos em nível de instância copiados no secundário precisam ser mantidos. Por

exemplo, se você ftzer uma alteração no pacote SSIS no primário, a alteraçâo tambémdeverá ser salva no secundário.

dt"rt" rápido

l. Aalteraçáo do banco de dados primário para qual modelo de recuperaçáo in-terrompe o log shipping?

2.

3.

Em qual tipo de backup o log shippingébaseada?

Qual operação não pode ser executada no banco de dados secundário para

continuar aaplicar backups de log de ftansação?

Respostas

1. Alterar o modelo de recuperação de um banco de dados para Simples interrom-pe o encadeamento de logs de transação e náo permite que os backups de 1og

de transaçáo sejam executados.

2. Backups de 1og de transação.

3. O banco de dados náo pode ser recuperado; portanto, você não pode executarRESTORE DATABASE. . .WIM RECOVERY.

pRÁT¡cA Configurando log shipping

Neste exercício, você vai configurar uma sessão de log shipping para o banco de dados

AdventureWorks entre duas instâncias do SOL Server.

NOTA Convenções de atribuição de nomes

Por coerência, nos referimos à instância que conterá o banco de dados primário como INSTP e

à instância que conterá o banco de dados secundário como INSTS.

1. Abra o Windows Explorer no primário e crie um compartilhamento chamado LS-

Backup.

Conceda permissões Full Control para esse compartilhamento na conta de serviçodo SQL Server no primário, assim como permissões Read para a conta de serviço do

SQL Server Agent no secundário.

Abra o Windows Explorer no secundário e crie um compartilhamento chamado LS-

copy.

Conceda permissões Full Control nesse compartilhamento para a conta de serviçodo SQL Server epa:ø aconta de serviço do SQL ServerAgent no secundário.

2.

3.

4.

Page 534: Livro_SQL

5.

6.

Teste o acesso para cefüficar-se de ter concedido as permissões corretamente.

Verifique se o banco de dadosAdventureWorÍes está configurado para o modelo derecuperaçáo Completo ou para Registro em massa. Se não estiver, mude o modelode recuperaçáo para Completo.

Inicie o SSMS, conecte-se com o INSTP dentro do Object Explorer, clique com obotáodireito do mouse no banco de dados AdventureWorks e escolha Properties. Abaixode SelectAPage, selecione Transaction log shipping.

Marque a caixa de seleção Enable This As A Primary Database In A log shippingConfiguration e clique em Backup Settings.

Na caixa de texto Network Path To Backup Folder, digite o caminho UNC (UniversalNaming Convention) para o compartilhamento criado no passo 1.

Na caixa de texto If The Backup Folder Is Located On The Primary Server, digite ocaminho ffsico para o diretório no qual seus backups seráo armazenados.

Mude o intervalo de alerta para seis minutos e, em seguida, programe o intervalode backup para dois minutos (consulte a Figura 76-2 paraver um exemplo).

7-

8.

9-

10.

11.

Capítulo l-6 r Log Shipping s33

Figura 16-2 Configurando as opções de backup.

12.

13.

14.

Clique em OK para fechar a caixa de diálogo Transaction Log Backup Settings.

Clique em Add para adicionar um novo secundário.

Clique em Connect e conecte-se com o INSTS; deixe o nome do banco de dados se-

cundário configurado com AdventureWork s.

Page 535: Livro_SQL

534 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

75. Você vai permitir que o log shipping gere um backup completo; portanto, verifiquese a opção Yes, Generate A Full Backup Of The Primary Database And Restore It IntoThe Secondary Database está selecionada, como mostrado na Figura 16-3.

Figura 16-3 Configurando o secundário.

16. Clique em Restore options e digite o caminho do diretório no qual você deseja que

os arquivos de dados e de log residam no secundário, como mostrado na Figura 16-

4. Clique em OK.

Figura 16-4 Configurando o local do banco de dados no secundário.

L7. Clique na guia Copy Files.

Page 536: Livro_SQL

18. Defina apasta de destino em que os backups de log de transação seráo copiados e

mude o intervalo de cópia para dois minutos (consulte a Figura 76-5 para ver umexemplo).

capítulo 16 r Log Shipping

Figura 16-5 Configurando o job de cópia.

Clique na guia Restore Transaction Log.t9.

20. Verifique se a opção No Recovery Mode está selecionada, defïna um atraso de zercminuto, configure o alerta para seis minutos e ajuste o tempo programado para arestauração ocorrer a cada dois minutos (consulte a Figura 17-6 paraver um exem-plo). Clique em OK pan fechar a caixa de diáÃogo Secondary Database Settings.

535

Figura 16-6 Configurando o job de restauração.

Page 537: Livro_SQL

536 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

NOTA Servidor mon¡tor

A configuração do servidor monitor será um exercício adicional para você fazer no final destecapítulo.

21. Clique em Script Configuration e, em seguida, selecione a opção Script Configura-tion To New QueryWindow. O SSMS gera um arquivo de script para configurar o logshipping e, em seguida, exibe o script em uma nova janela de consulta.

22. Se necessário, troque novamente para a caixa de diálogo Database Properties, naqual você está configurando o 1og shipping.

IMPORTANTE FILESTREAM

O banco de dados AdventureWorks contém um grupo de arquivos FILESTREAM. Antes de res-taurar o banco de dados AdventureWorks na instância do secundário, você deve certificar-sede que FILESTREAM esteja ativado.

23. Clique em OK para gerar a configuração do log shipping, faça o backup do banco dedadosAdventureWorles em INSTB restaureAdventureWorþs em INSTS, crie os jobs e

alertas de log shipping e inicie o log shipping.

24. Yetìfique se os backups estáo indo para a pasta correta, se são copiados coÍreta-mente de INSTP para INSTS e se são restaurados em INSTS.

25. Inspecione o script que foi gerado paraver as açóes que foram executadas pela in-rcrface grâfica do usuário (GUI) no SSMS.

MELHoRES PRÁTIcAs Configurando intervalos

A programação de intervalo para o job de backup e para o job de cópia determina a perda dedados que você pode esperar no caso de uma falha do servidor primário. Por exemplo, se vocêconfigurar os backups para ocorrerem a cada L5 minutos, mas copiar backups somente a cada45 minutos, poderá perder uma hora de backups se o servidor primário falhar. lsso aconteceriaporque o backup poderia terminar imediatamente após o job de cópia ser concluído, o quesignificaria que o job de cópia não capturaria os últimos L5 minutos detransações e não ascopiaria por outros 45 minutos.

O menor intervalo de backup que você desejará configurar para log shipping é de dois minu-tos. Geralmente, você deve configurar osjobs de backup, cópia e restauração para executaremno mesmo intervalo. Configure a geração de alertas para o caso de um backup ou uma restau-ração não ocorrer dentro de três vezes o intervalo dojob de backup ou restauração.

Page 538: Livro_SQL

Resumo da liçãor Um banco de dados deve estar no modelo de recuperaçáo Completo ou Registro em

massa para participar do log shipping.

r O log shipping é iniciado com um backup completo. Entáo, um encadeamento con-tínuo de logs de transaçáo ê aplicado no secundário.

r os backups completos e diferenciais subsequentes extraídos do primário não afe-tam o log shipping.

r Os objetos em nível de instância, como endpoints, logins, certificados e pacotes

SSIS, devem ser copiados manualmente do primário para o secundário e as altera-

ções feitas nesses objetos devem ser mantidas manualmente.

Revisão da lição

Responda a pergunta a seguir patatestar seu conhecimento sobre aLiçáo 2. Apetguntatambém está disponível no CD do livro (em inglês) se você preferir revisála em formatoeletrônico.

Capítulo 16 r Log Shipping

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. Qual dos objetos em nível de instância a seguir é exigido no secundário para se

poder acessar o banco de dados quando for recuperado?

A. Chave mestra de banco de dados

537

B.

c.

D.

Logins

fobs do SQL Server Agent

Triggers de DDL

Page 539: Livro_SQL

Lição 3: Projetando estratégias de failover e failback

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Como o 1og shipping opera em nível de banco de dados, você precisa considerar todos os

objetos em nível de instância que serão necessários paraque o banco de dados secundá-rio possa atender os aplicativos no caso de failover. Esta lição explica como se projeta e

prepara uma sessão de log shipping para failover, assim como os cenários e operaçõesnecessários para o failback.

Após esta lição, você será capaz de:

I Trocar roles de servidor

I Projetar uma estratégia de failover de aplicativo

I Projetar uma estratégia para voltar a conectar aplicativos clientes

Tempo estimado para a lição:45 minutos

ffi rvrunao real

Mtchael Hoteþ

Hâ cerca de dois anos, eu estava prestando consultoria para um grande varejistaque tinha armazéns espalhados pelos Estados Unidos, com sede no centro-oeste.Cada armazém tinha um servidor local que era usado por operadores de empilha-deftapan despachar pedidos para as lojas da rede. O tempo da paralisação era umproblema muito grande, pois todas as operações do armazém eram orquestradaspor meio do SQL Server. Os operadores de empilhadeira recebiam o próximo itemindividual em um pedido que era preenchido por meio de um fone de ouvido. Opedido era dirigido ao operador com o corredor e a prateleira corretos, assim comoindicava a quantidade de um item específrco que deveria ser adicionada na paleta.Usando comandos de voz, o operador de empilhadeira reconhecia o item e solicita-va o próximo encaminhamento. Se o sistema caísse, os operadores não podiam se-lecionar os itens dos pedidos e a entrega nas lojas era atrasada. Isso podia resultarrapidamente em milhões de dólares de prejuízo pelo tempo de paralisação.

Para proteger os sistemas do tempo de paralisaçáo, foi decidido implementar 1og

shipping. Todos os bancos de dados de cada armazêm foram enviados de voltapara os escritórios da empresa onde fïcava o servidor de reserva. Embora o log shi-pping pudesse reduzir a vulnerabilidade ao tempo de paralisação em um armazém,os arquitetos náo consider ar am v ârios fatores fu ndamentais.

Os armazéns estavam conectados à sede por meio de linhas dial-up de 56 Kbps.Embora a conexáo dial-up fosse boa o suficiente pan receber pedidos periodica-mente e enviar de volta recibos de cumprimento, ela acarretava uma penalidadeno desempenho inaceitável quando os operadores tentavam preencher pedidos pormeio da execução de consultas em um servidor que poderia estar a mais de 3.000km de distância.

Page 540: Livro_SQL

os backups de log de transação eram executados a cada cinco minutos; devido ao

alto grau de atividade em um armazém muito movimentado, alguns dos backupspodiam ter 500 MB ou mais de tamanho. Esses backups demoravam vários minu-tos para serem transmitidos pela conexão dial-up e backups de log de transaçáo de

mais de duas ou três horas eram muito comuns.

Devido ànaturezavolátil dos bancos de dados, esse cliente em particular estavareindexando cada um dos quatro bancos de dados todas as noites em cadaarma-zém. Ter um servidor enviando durante a noite logs de transaçáo enormes, quepodiam ter facilmente 10 GB ou mais de tamanho, era um problema. Esse clientetinha 47 armazéns que enviavam seus logs de transação para um único servidorde reserva na sede.

Rapidamente se tornou rotina o turno da manhã começar as 07hO0min (com o

log shipping a cerca de três a qlJatro horas de atraso) e rapidamente subir para

mais de 72 a 14 horas ou latência antes de finalmente começar a cair. A latênciado log shipping finalmente diminuía para menos de uma hora, quase no momentoem que o job de reindexação noturno começava oulravez. Uma solução tê,cnica,implementada sem considerar o ambiente empresarial real, quase certamente estácondenada a falharl

Antes do SQL Server 2008, o volume de dados alterados podia ter um impactosubstancial na latência dentro do 1og shipping. Agora, os backups do SQL Server2O0B podem ser compactados para rcduzir alatência no elemento mais lento den-tro de uma arquitetura de log shipping, a rede.

Capítulo 16 r Log Shipping

Failover de log shipping

539

O log shipping não contém um mecanismo para detectar uma falha do primário nem

um mecanism o para fazer o failover aufomâlica no secundário. A detecçáo de falhas e o

processo de failover são operaçóes manuais.

Mesmo que o processo náo seja aufomatizado, ele é muito simples. Basicamente, em caso

de falha, você precisa recuperar o banco de dados secundário e conectar os aplicativos.

o processo geral de failover em um secundário é o seguinte:

1. Restaurar os logs de transação paraÍornar o secundário o mais atualizado possível.

2. Restaurar o último log de transação usando a opçâo WITH RECOVERY.

5. ExecutarALTERLOGLNparacadalogindoSQLServernosecundário,parafazerumnovo mapeamento dos usuários do banco de dados nos logins apropriados.

4. Se necessário, iniciar os endpoints.

5. Verificar as permissóes de segurança.

6. Alterar as strings de conexáo dos aplicativos para apontar para o secundário.

7. lniciar os jobs necessários, como o job para iniciar o backup do banco de dados.

Page 541: Livro_SQL

540

A primeira larefa a ser executada durante um failover é minimizar a perda de dados.Se houver logs de transação que ainda não foram aplicados no secundário por meio dolog shipping, você deve restaurá-los. O último log de transação que você restaurar deveespecificar a opçáo WITH RECOVERT. Se todos os logs de transação jâ foram aplicadospor meio do log shipping, você precisa executar um comando RESTORE DATABASE. .

.WITH RECOVERY. Esse comando coloca o banco de dados online, após o que náo sãomais possíveis restaurações adicionais de log de transação.

Depois que colocar o banco de dados secundário online, você deve verificar todos os

outros objetos necessários para o aplicativo funcionar. Você deve executar ALTER L)GINpara cada login do SQL Server, para garaîtir um mapeamento correto para um usuáriono banco de dados secundário. Você também deve verificar os endpoints, servidoresvinculados ou outros objetos necessários paÍa o aplicativo. Depois de veriflcar se todosos objetos existem, se as permissões de segurança estão corretas e se o banco de dadosestá acessível, você precisa conectar o aplicativo no banco de dados para restaurar as

operações para os usuários.

Você só deve executar as larclas administrativas restantes depois de ter restaurado as

operações normais. Remova todas as partes da configuraçáo do log shipping, geralmen-te os jobs de cópia e restauração. Você também deve criar um job que execute backupsno banco de dados.

O banco de dados que era o secundário , agora se torna o banco de dados primário, acei-

tando transações, e precisa ser protegido o mais breve possível. Se você tiver copiado nosecundário todos os objetos em nível de instância necessários, assim como verificadocada obleto o máximo possível, o tempo para executar o failover de aplicativos do pri-mério para o secundário podeút ser uma questáo de um ou dois minutos.

Depois que o primário original for reparado e colocado novamente online, você reativao log shipping - com o primário original sendo rebaixado pan secundário. Isso resta-belece o failover por meio do 1og shipping, sem acarretar uma paralisaçáo adicional noaplicativo.

Failback de log shippingDepois que você tiver feito o failover no secundário, o banco de dados começará a diver-gir da fonte original. Permitindo-se a execuçáo de transações, o banco de dados secun-dá,rio foi promovido aprimârio e agora é obanco de dados de registro pan o aplicativo.

Quando o servidor que falhou é reparado e colocado novamente online, ele deve assu-mir o role de standby.

O failback para o primário original deve ocorrer somente por dois motivos:

r A direção determina que os aplicativos devem ser executados em um servidor es-

pecífico.

r O desempenho ou a tolerância à falha degrada quando o aplicativo está conectadono secundário.

A diretoria determinar que os aplicativos devem ser executados em uma instância emparticular do SQL Server nunca éumaboaidéia. Esse tipo de decisão deve ser deixada

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Page 542: Livro_SQL

para a equipe técnica. Se os aplicativos estão em execução e a empresa está funcionan-do, a diretoria náo deve se preocupar com a implemenlaçáo lécnica.

Às vezes náo é possível alocar um reserva que tenha a mesma capacidade do principal.

Quando o reserva tem menos recursos, o desempenho dos aplicativos pode degradar. Nesse

caso, você deve colocar os aplicativos de volta no primário que falhou o mais breve possivel. Como transações foram executadas no banco de dados do reserva, você precisa obteruma cópia atualtzada do banco de dados no principal original, o que pode ser feito com ummínimo de tempo de paralisação nos aplicativos, executando-se os passos a seguir:

1. Reinicialize o primârio com um backup do reserva, certificando-se de especificar a

opção No Recovery.

2. Aplique no primário o backup diferencial mais recente do banco de dados e os ba-ckups de log de transação adicionais, especificando a opção No Recovery para todasas restaurações.

3. Copie no primário os objetos em nível de instância que você criou ou alterou noreserva.

4. Continue a repetir o passo 2 até, estar preparado para colocar os aplicativos nova-mente no primário.

5. Interrompa o job de backup de log de transação no primário.

6. Desconecte todos os aplicativos do reserva e impeça o acesso desativando os loginsusando o comando a seguir:

ALTER LOGIN <nomelogìn> DISABLE;

7. Faça o backup do último log de transação no reserva.

Capítulo 16 r Log Shipping

8.

9.

10.

1t.72.

Restaure o último log de transaçáo no primário usando a opção WITH RECOVERY.

Configure novamente os aplicativos para conectar no primário.

Remova a configuração de log shipping do reserva.

Recrie a configuração de 1og shipping no primário e reinicialize o reserva.

Ative os logins no reserva.

Uma alternativa aulomatizada para os quatro primeiros passos desse processo é confi-gurar o 1og shipping do reserva no primário. Esse procedimento reinicializa o primárioe aplica um encadeamento contínuo de logs de transação alévocê, estar preparado parafazet uma breve paralisaçáo no aplicativo.

MELHoRES PRÁTlcAs Failback a partir de um reserva

Quando possível, você deve garantir que o desempenho ou a tolerância à falha não degradem,se um aplicativo precisar ter failover no banco de dados secundário. lsso elimina qualquermotivo técnico para a necessidade de retornar para o primário original. Se você não precisa

retornar para o primário original, pode inverter a direção do log shipping depois que o ser-vidor que falhou voltar a ficar online. Não tendo que retornaL você elimina uma paralisação

adicional no aplicativo.

Page 543: Livro_SQL

542 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

ft"rt" rápido

1. Qual opçáo de restauração é usada parucolocar umbanco de dados online?

2. Quais sáo os dois motivos que exigiriam lazer uma paralisação adicional e re-tornar para o primário original, depois que ele fosse reparado e voltasse a ftcaronline?

Respostas

1. A opção WITH RECOVERY colocaum banco de dados online, tornando-o aces-sível para conexões.

2. As únicas razões pelas quais você precisaria retornar ao primârio original sáoas seguintes:

tr A empresa determina o failback.

tr O aplicativo funciona em um estado degradado ao ser executado no se-

cundário.

PRÁTtcA Failover de log shippingNeste exercício, você vai fazer o failover no secundário que configurou em um exercícioanterior.

1. Abra o SQL Server Configuration Manager e interrompa o serviço SQL Server emINSTP para simular uma falha no primário.

2.

3.

Conecte-se com o INSTS no Object Explorer do SSMS.

Abra o log de erro do SQL Server e verifique o último backup que foi restaurado nobanco de dados Adventurel4/orks.

Abra uma nova janela de consulta e altere o contexto do banco de dados parc mes-tre.

4.

5. Se algum backup de 1og de transação náo foi aplicado no banco de dadosAdventu-reWorþ,s , restaure todos os backups adicionais necessários para avançar o banco de

dados o máximo possível.

6. Após restaurar todos os backups possíveis, execute o comando a seguir:

RESTORE DATABASE Adventu re\¡rlorks I¡TIITH RECOVERY ;

7. Yerifr,que se o banco de dadosAdventureWorþs está online e acessível.

8. Desative os jobs Copy e Restore da configuração de 1og shipping.

9. Troque parao SQL Server Configuration Manager e reinicie INSTP

1O. Depois que INSTP for reiniciado, conecte o Object Explorer com o INSTS dentro doSSMS.

1 1. Repita os passos da prâtica da Lição 2 para configurar novamente o log shipping nadireçáo oposta: INSTS -+ INSTP

Page 544: Livro_SQL

Resumo da liçãor Detectar uma falha e fazer o failover é um processo manual do log shipping.

I Depois que o banco de dados secundário for recuperado, os aplicativos podem sernovamente conectados e retomar as operações.

I O método preferido para restabelecer o failover depois que o primário for corrigidoê rcbaixâ-lo para secundário e inverter a direçáo do log shipping.

r Se você é obrigado a Íetornar para o primário original, é necessária uma paralisa-

çáo adicional do aplicativo.

Revisão da lição

Responda a pergunta a seguir para testar seu conhecimento sobre aLiçâo 3. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisála em formatoeletrônico.

Capítulo 16 r Log Shipping 543

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. Que comando é executado para recrl-perat o banco de dados secundário e ativáL-lopara começar a aceitar transações?

A. ALTERDATABASE

B. RESTORE DATABASE. , .WTM RECOVERY

C. RESTORE DATABASE. . .WITH ST,4NDBY

D. EXECUTE ALTER LOGIN

Page 545: Livro_SQL

Revisão do capítulo

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

Paru reforçar o que aprendeu neste capítulo, você pode:

r Ler o resumo do capítulo.

r Examinar a lista de termos-chave introduzidos neste capítulo,

I Completar o cenário de caso. Esse cenário aborda situações reais que envolvem os

tópicos deste capítulo e solicita que você crie uma soluçáo.

r Completar as práticas sugeridas.

a Fazer um teste.

Resumo do capítuloo log shipping conta com o fato de haver um encadeamento contínuo de logs de

transação extraído de um banco de dados primário e restaurado em um banco de

dados secundário.

o log shipping é uma opção de "warm standby". Fica por conta de um administra-dor detectar uma falha, assim como fazer o failover no secundário.

O log shipping opera em nível de banco de dados e náo inclui quaisquer objetos em

nível de instância que poderiam ser exigidos por um aplicativo, como logins, end-points finais e servidores vinculados. Ela também não gannle a integridade entrebancos de dados.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando o

glossário no final do livro.

r Job de backup

r Job de cópia

I Sessão de log shipping

r Instância de monitor

¡ Banco de dados primário

r Servidor primário

r job de restauração

I Banco de dados secundário

I Servidor secundário

r Banco de dados de reserva

r Servidor de reserva

r Encadeamento de log de transação

Page 546: Livro_SQL

Cenário de caso

No cenário de caso a seguir, você vai aplicar o que aprendeu neste capítulo. As respostas

dessas questões podem ser encontradas na seçáo "Respostas", no final deste livro.

Cenário de caso: Planejamento para alta disponibilidadeNo cenário de caso a seguir, você aplica o que aprendeu sobre log shipping. As respostas

dessas questões podem ser encontradas na seçáo "Respostas", no final deste livro.

Histórico

Visão geral da empresa

A Margie's Travel oferece serviços de viagem em um único escritório localizado em San

Diego. Os clientes podem se encontrar com um agenle no escritório de San Diego ou

fazer preparutivos através do site da empresa.

Problemas

Com a inclusáo de um novo catálogo de produtos, o site está com problemas de

estabilidade. Os clientes també,m sáo impedidos de adquirir produtos ou serviçosem vários momentos durante o dia, quando estáo sendo feitas alterações nos dados

subjacentes.

A empresa acabou de dispensat a firma de consultoria responsável pelo desenvolvi-mento e gerenciamento do site e de todos os outros aplicativos da empresa, porque

não conseguiu fornecer nenhuma disponibilidadepara os sistemas fundamentais para

o negócio.

Mudanças planejadas

O superintendente de tecnologia (CTO) recentemente contratado foi incumbido de imple-mentar alta disponibilidade para todos os sistemas fundamentais para o negócio. O CTO

acabou de contralar um DBA e um administrador de sistemas para ajudar nessa tarefa,

assim como para gerenciar as operações diárias.

Ambiente de dados existenteExistem 11 bancos de dados dentro do ambiente, como mostrado naTabela 16-7.

Capítulo 16 r Log Shipping 545

Tabela 16-1 Bancos de dados dentro da Margie's Travel

Orders

Customers

CreditCords

Employees

HumonResources Armazena todos os documentos de recursos humanos (RH), 300 MB

assim como salários de funcionários.

Armazena todos os pedidos feitos pelos clientes.

Armazena todas as informaçöes pessoais relacionadas a umcliente.

Armazena informaçöes de cartão de crédito de cliente.

Armazena informaçöes relacionadas a todos os funcionários. 50 MB

50 GB

]-5 GB

2OO MB

(continua)

Page 547: Livro_SQL

546 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Tabefa 16-1 Bancos de dados dentro da Margie's Travel (continuação)

Products

Flights

Excursions

Armazena os produtos que podem ser comprados no site.

CarRentol

Armazena os voos que foram reservados pelos clientes.

Armazena os cruzeiros que foram reservados pelos clientes.

Admin

Armazena as excursöes que foram reservadas pelos clientes. 2 GBUma excursão é definida como algo que não é voo, cruzeiro,produto ou aluguel de carro.

o ambiente tem um único servidor da web, chamado wEB1, e um único servidor debanco de dados, chamado SQL1. Todos os servidores estão sendo executados no Win-dows Server 2003 e SQL1 está executando SQL Server 2008 Sp1.

SQL1 tem um gabinete de armazenamento externo conectado aumacontroladora RAID(redundant array of inexpensive disks) com uma reserva capaz de implementar RAID O,

RAID 1 e RAID 5. Atualmente, o conjunto inteiro está configurado como um único RAID0. O atmazenamento atual estâ com apenas 70o/o da capacidade.

Uma unidade de fita está conectada em \MEB1 e em SQL1, mas as unidades de fita nun-ca foram usadas.

Atualmente, SQL1 e wEBl estáo localizados no cubículo adjacente ao consultor dispen-sado anteriormente. Todos os aplicativos em WEB1 foram escritos com Active ServerPages (ASP) ou ColdFusion.

Ambiente proposto

O CTO reservou uma parte do orçamentopara comprar mais quatro servidores confi-gurados com Windows Server 2003 e SQL Server 2008. Todo hardware seÉt capaz desuportar cluster.

Os dados dentro dos bancos de dados existentes Products, Customers, Orders, Ftíghts,Crutses, Excursíons e Car Rental podem ser expostos na Internet por meio de aplicativosem execução em \MEB1. Todas as informações de cafiáo de crédito que estão sendo mo-vidas para o banco de dados Customers sáo criptografadas por uma chave assimétricaparamâxima segurança. Todos os outros bancos de dados devem ficar atrás do firewalle ser acessíveis somente para usuários autenticados no domÍnio corporativo.

Uma nova SAN (Storage Area Nenvorþ está sendo implementad a paÍa armazenamento debanco de dados, contendo espaço em unidade suficiente para todos os bancos de dados.Cada um dos 20 números de unidade lógica (LUNs) usados na SAN está configurado emuma configuração de faixa de espelhos, com quatro discos em cada conjunto de espelho.

Para agilizar as operações, a Margie's Travel está consolidando os bancos de dados,como mostrado naTabela 76-2.

Armazena os aluguéis de carro que foram reservados pelosclientes.

Um banco de dados utilitário para uso dos DBAs, queatualmente está vazio.

25 GB

2GB

1- GB

1GB

T2GB

Page 548: Livro_SQL

Tabela 16-2 Bancos de dados propostos dentro da Margie's Travel

Bookings

Customers

Employees

HumanResources

Products

Admin

Orders, Flighß, Cruises, Excursìons, CarRentol

Requisitos empresar¡a¡sEstá em vigor uma solução de curto prazo que permite ao sistema ser completamenterecuperado de qualquer paralisação dentro de dois dias úteis, com uma perda de dadosmáxima de uma hora. No caso de um desastre maior, a empresa pode sobreviver à perdade até dois dias de dados.

Uma janela de manutenção entre meia-noite e 08h00min de domingo está disponívelpara se fazer quaisquer alterações.

Uma solução de ptazo mais longo precisa ser criada para proteger a empresa de falhasde hardware, com uma paralisação máxima exigida de menos de um minuto.

Requisitos técnicosos bancos de dados Orders e Customers precisam set atmazenados na mesma instânciado SQL Server e ter failover em conjunto, pois os dois bancos de dados estáo vincula-dos. Os dados de cafiáo de crédito precisam ser seguros em cada formato, incluindo osbackups.

O banco de dados Products precisa ser colocado no modelo de recuperaçáo Registro emmassa a cada noite, para facilitar o carregamento incremental de folhas de dados deproduto e artigos de pesquisa.

Todos os bancos de dados relacionados ao RH devem ter segurança muito forte, comacesso somente para o diretor de RH. Todos os dados de HR devem ser criptografadosdentro do banco de dados, assim como em qualquer oulraparte da rede.

O departamento de marketing precisa construir relatórios com todos os dados de clientee pedido, junto com os produtos ou serviços associados que foram reservados, paradesenvolver novas campanhas de marketing e ofertas de produto. Toda análise exigedados quase em tempo real. As operações de produção de relatório não podem ser afeta-das por atualizações do ambiente de produçáo.

Todos os bancos de dados são obrigados a manter 99,92o/o de disponibilidade duranteum ano inteiro. Um mínimo de intervenção dos administradores é necessário para se

recuperar de uma paralisação. Os clientes que estejam usando o site náo podem saberquando ocorre um failover.

Customers, CreditCards

Capítulo 16 r Log Shipping

55 GB

1.5 GB

50 MB

3OO MB

25 GB

L2GB

Page 549: Livro_SQL

548 Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

1. Que tecnologia de alta disponibilidade pode ser usada para os bancos de dadosCustomers e Bookíngs para garantir a disponibilidade mesmo quando o servidorprimário falha? suponha que todas as unidades de disco estão intactas e que éaplicado ûatamento de transação correto.

A. Failover cluster

B. Log shipping

C. Replicação

D. Espelhamento de banco de dados

2. Um novo conjunto de relatórios sobre clientes e pedidos está sendo projetado paraos executivos. Esses relatórios são mais estáticos e podem estar defasados do sis-tema de produçáo por no máximo seis horas, mas não mais do que seis horas. euetecnologia pode ser usada para cumprir esse requisito?

A. Espelhamento de banco de dados

B. Espelhamento de banco de dados acoplado com snapshot de banco de dados

C. Log shipping

D. Replicação

o banco de dados Products precisa se tornar totalmente redundante para o caso deum desastre geográfr,co extenso. eue tecnologia de alta disponibilidade pode serusada com o banco de dados products?

A. Espelhamento de banco de dados

B. Failover cluster

C. Replicação

D. Log shipping

o cro decidiu que log shipping será usada para o banco de dados products. comovocê impede que usuários com autoridade sysadmin alterem o modelo de recupera-çao do banco de dados para Simples?

A. Revogar a autoridade sysadmin.

B. Criar uma trigger de DDL em nível de banco de dados.

C. Criar uma trigger de DDL em nível de instância.

D. Enviar uma notificação de evento.

Para fornecer uma cópia redundante do banco de dados customers usando log ship-ping, quais objetos adicionais devem ser transferidos para o servidor secundário?

A. Chave mestra da instância

B. Chave mestra do banco de dados

C. Certificado

D. Jobs do SQL ServerAgenr

3.

4.

5.

Page 550: Livro_SQL

6. Quais mecanismos você utiliza para garanfir a segurança dos dados de cartão de

crédito? (Escolha todas as respostas que se aplicam.)

A. Backup em um sistema de arquivos criptografado.

B. Usar a clá:u'slda PASSWORD com o comando BACKUP.

C. Armazenar o backup de sua chave mestra de banco de dados em um local tran-cado que seja diferente de onde estão seus backups.

D. Armazenar o backup de sua chave mestra de banco de dados em um diretóriodiferente de seus backups de banco de dados.

O banco de dados Bookíngs é acessado por vários logins do SQL Server. O bancode dados Bookings tem o failover feito em um servidor secundário. Depois que o

banco de dados secundário se torna acessível, mas antes que os usuários possamse conectar, qual comando deve ser executado no secundário para garaîlir que cadalogin tenha as permissões apropriadas no banco de dados Booleíngs?

A. sp_resolve_logíns

B. ALTER LOGTN. . .

C. GR,ANT ..D. sp _change _users _logtn

7.

Capítulo L6 r Log Shipping

8. O CTO quer fornecer várias camadas de failover para os bancos de dados Customers,Bookíngs e Products . Um failover do primário deve garantir que todos os bancos de

dados fiquem online em um período de tempo muito curto, enquanto também man-tém a integridade dos bancos de dados Customers e Bookíngs. Uma falha completada solução principal precisa ter o backup feito por uma solução secundária quepode perder atê,30 minutos de dados, assim como ter violações de integridade entreos bancos de dados Customers e Bookings. Que combinações de tecnologia podemser usadas para cumprir todos os requisitos empresariais?

A. Primário - failover cluster; secundário - espelhamento de banco de dados

B. Primário - failover cluster; secundário - replicaçâo

C. Primário - failover cluster; secundário - failover cluster

D. Primário - failover cluster; secundário - log shipping

E. Primário - espelhamento de banco de dados; secundário - log shipping

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

549

lniciando o log shippingNesta tarefa, você vai pralicar várias maneiras de configurar a arquitetura de 1ogshipping.

Page 551: Livro_SQL

r Exercício 1 Adicione um servidor monitor na configuração que você definiu naprática daLiçâo 2.

I Exercício 2 Mude o nome do banco de dados no servidor secundário.

r Exercício 3 Configure uma estrutura de diretório diferente no secund.ário. Adi-cione um novo grupo de arquivos e um novo arquivo no banco de dadosAdventu-relt/orþs. Verifique se a restauração falha no secundário. Execute o comando RES-TORE LOG. . .WITH MOVE . . manualmente para aplicar o log de transaçáo quecontém os comandos para ctiar o novo grupo de arquivos e o novo arquivo.

r Exercício 4 Crie dois novos logins do SQL Server no primário e conceda a elesacesso ao banco de dados AdventureWorþ,s. Dê a cada login direitos de acesso dife-rentes. Recrie esses dois logins no secundário, na ordem oposta.

r Exercício 5 Crie servidores vinculados, pacotes SSIS, endpoint, objetos do SeL Ser-ver Agent e outros objetos, e pratique os métodos de movêlos para o secundário.

log shipping para failover e failbackNesta tarefa, você vai praticar o failover para o secundário, assim como o failback paraa instância original.

I Exercício 1 Depois de concluir o Exercício 4 da tarefa anterior, faça failover nosecundário, conecte-se comcadaum dos logins criados no Exercício 4 everifique secada um deles têm a autoridade de segurança do outro login. (lsto é, Loginf deveter autoridade no banco de dados que Login2 deve ter eLogin2 deve ter aãutorida-de no banco de dados que Loginl deve ter.) Conija as permissões de segurança.

I Exercício 2 Depois de concluir o Exercício 5 datareÍa anterio¡ faça failover nosecundário e verifique se cada objeto em nível de instância funciona conforme oesperado.

r Exercício 3 Coloque o primário original novamente online e configure-o nova-mente como um novo servidor secundário.

r Exercício 4 Pratique o failback para o primário original, utilizando os dois méto-dos descritos naLiçã,o S.

Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

Faça um testeos testes do cD deste livro (em inglês) oferecem muitas opções. Você pode fazer umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-ficação 70-432. É possível configurar o teste para que ele simule a experiência de fazerum exame de certificação ou configurâ-Io no modo de estudo (study mode) para ver asrespostas corretas e explicações depois de cada questão.

MATSTNFORMAçöES Testes

Para mais detalhes sobre todas as opçöes de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

Page 552: Livro_SQL

Capítulo L7

ßeplicaçãgo principal objetivo da replicaçáo é distribuir dados de um banco de dados principalpara um ou mais bancos de dados secundários. Como a replicaçáo mantém uma cópiaduplicada dos dados em sincronismo com a cópia mestra, a tecnologia pode ser usadapara fornecer disponibilid ade para aplicativos.

Este capítulo fornece uma visão geralbâsica do mecanismo de replicação, junto com avariedade de opções que você pode usar para distribuir dados. Ele também explica comovocê pode usar os mecanismos de distribuição de dados pan fotnecer uma solução de

disponibilidade de latência extremamente baixa, que também tem a capacidade de mini-mizar o tempo de paralisação no caso de um failback ser necessário.

Objetivo de exame neste capítulo:

r Implementar replicação

Liçöes deste capítulo:

r Liçáo 1: Visão geralda replicaçáo 552

r Liçáo 2: Replicaçáo transacional 564

r Lição 3: Replicaçáo por merge 577

Antes de começarParafazer as lições deste capítulo, você deve ter:

r Uma instância do Microsoft SQL Server 2008 instalada, edição Enterprise, Stan-dard ou Developer

I O banco de dadosAdventureWorþs instalado

r Dois bancos de dados, chamadosAWTransactíoncl eAWMerge, que sejam cópias dobanco de dado s Adv en tureWo rþ.s

NOTA Contas de serviço

Porsegurança, o mecanismo de replicação usa contas nomeadas. Portanto, a conta de serviçosob as quais o SQL Server e o SQL Server Agent estão executando devem ser contas locais oude domínio. Você não pode usar localsystem para a conta de serviço.

Page 553: Livro_SQL

Lição 1: Visão geral da replicação

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

A replicação é projetada como um mecanismo de distribuição de dados. No nível maisbásico, as alterações feitas em um banco de dados são distribuídas para um ou maisdestinos. O mecanismo de replicaçáo básico ê projetado para implementaçã,o muito fle-xível, mas a arquitetura básica pode ser usada para fornecer disponibilidade para umbanco de dados, pois uma cópia redundante dos dados é mantida em sincronismo comuma cópia mestra.

Esta lição descreve os vários componentes que você pode configurar na replicação, juntocom a arquiteturabâsica disponível dentro do mecanismo de replicação.

Após esta lição, você será capaz de:

I Projetar a topologia da replicação para arquivar dados

I Especificar o distribuidor da publicação

I Especificar o assinante da publicação

Tempo estimado para a lição: 90 minutos

Componentes da rep¡¡cação

os dados a serem replicados sáo estabelecidos por três componentes centrais na defi-nição.

ArtigosO artígo é o bloco de construçáo básico da replicação e define o nível mais granular dadistribuição de dados. Um artigo pode ser definido em uma tabela, view, procedimentoarmazenado (stored procedure) ou função.

O tipo de artigo mais relevante para alta disponibilidade é um artigo definido em umatabela. O artigo define o conjunto de dados dentro da tabela, que o SQL Server replicaem um ou mais bancos de dados.

PublicaçöesA.publícaçõo é o nível mais granular dentro de uma arquitetura de replicaçáo. As publi-cações são clusters de artigos que definem o conjunto de replicação.

FiltrosA replicação éúnica entre as diversas tecnologias de alta disponibilidade, pois tem acapacidade de tornar redundante apenas uma parte de um banco de dados. você podeaplicar em cada artigo um ou mais filtros que restrinjam o conjunto de dados que é

replicado.

Você pode filtrar artigos por linhas ou por colunas.

Page 554: Livro_SQL

A movimentação de dados dentro da replicação é referida como publicação ou conjunto dedados. lsso se dá sempre dentro do contexto do subconjunto dos dados que você definiu paraserem replicados, com base nos artigos selecionados e nos fíltros de linha ou coluna aplicados.Essa é uma característica exclusiva da replicação, pela qual parte de um banco de dados podese tornar altamente disponível.

Um¡frltro de coluna especifica um subconjunto das colunas dentro de uma tabela. o fil-tro de coluna permite que dados sejam replicados, mas as informações que talvez sejamconfldenciais podem ser excluídas.

Um¡frltro de línhq restringe o conjunto de linhas que são replicadas. Você pode aplicartrês tipos diferentes de filtros de linha:

r Ortltro de ltnha estátíco é predefinido quando o artigo é criado e restringe o artigoao mesmo subconjunto de dados, independente do assinante. Um exemplo de filtrode linha estático é o seguinte:

I¡IHERE State = 'TX'

t O.iflltro de línha dínâmíco, disponível somente na replicaçã,o por merge (mescla-gem), permite definir um filtro que não é fixado em um artigo. Durante o processode sincronismo, o filtro é calculado com base nas informações do assinante, o quepermite que uma única publicação seja distribuída para diferentes conjuntos de da-dos para cada assinante. Um exemplo de filtro de linha dinâmico é o seguinte:

t¡IHERE UserNâfiê = sus€F_snameo

I O¡frltro dejunção, disponível somente na replicaçáo por merge, permite filtrar umatabela com base na relaçã,o com uma tabela pai. Por exemplo, você poderia ter umatabela com clientes, seus pedidos correspondentes e os detalhes dos pedidos. Se

atabelade clientes tiverum filtro que restrinja o conjunto de dados aum estadoem particular, você também desejará filtrar os pedidos e os detalhes dos pedidosda mesma maneira. Contudo, a coluna de estado não existe em nenhuma dessastabelas. Empregando um filtro de junção, você pode filtrar os clientes com base noestado e, entáo, ter tambêm as tabelas de pedidos e de detalhes dos pedidos filtra-das com base no subconjunto dos clientes que está sendo replicado.

Capítulo 17 r Replicação 553

,iår

fllì DrcA DE EXAME\t;r,

Embora a replicação tenha a capacidade de aplicar filtros em artigos, essa capacidade não éutilizada em arquiteturas de alta disponibilidade. Uma arquitetura de alta disponibilidade sepreocupa principalmente em manter uma cópia completa e coerente dos dados em uma ins-tância separada do SQL Server.

Roles de replicação

Você pode configurar bancos de dados - e, correspondentemente, as instâncias que con-têm os bancos de dados - em três roles diferentes:

Page 555: Livro_SQL

a O publícador mantém a cópia mestra dos dados dentro de uma arquitetura de repli-caçáo. Você configura a instância que contém o banco de dados publicador com apublicação que define o conjunto de dados a ser replicado.

f O assínante é o banco de dados que está recebendo alterações do mecanismo de re-plicaçáo, definidas pela publicação que está assinando. Um assinante pode receberalterações de mais de uma publicaçáo.

t O dístrtbutd.or é o principal mecanismo dentro de uma arquitetura de replicação. O

banco de dados de distribuiçáo é armazenado na instância configurada como distri-buidor. Em qualquer arquitetura de replicação, o distribuidor é o local no qual todosos agentes de replicação sáo executados por padrã,o.

Uma instância do SQL Server pode ser conflgurada como distribuidor. Um banco de da-dos pode ser configurado como publicador, como um assinante ou como ambos.

Topologias de replicação

Atopología de replicação fornece um diagrama de fluxo de processos que descreve comoos dados fluem dentro de uma arquitetura de replicaçáo.

Topologia do publicador centralA topologia do publicador central consiste em um único publicador que tem um ou maisassinantes. O publicador central contém a cópia mestra dos dados e é usado paÍa con-figurar a arquitetura de replicaçáo. Nessa topologia, as alterações de dados geralmenteocorrem em uma única origem, o publicador, e fluem para um ou mais assinantes, comomostrado na Figura 17 -1 . O publicador central é, a topologia mais comum ente utilizadana replicaçáo.

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

PublicadorII

TDistribuidor

l-t-lIIIAssinante Assinante Assinante

Figura 17-1 Topologia do publicador central.

Page 556: Livro_SQL

Topologia do assinante centralA topologia do assinante central consiste em um único assinante que tem mais de umpublicador. As alterações são gravadas em vários publicadores e, então, consolidadasem um único assinante, como mostrado na Figura l7-2. A topologia do assinante cen-

tral é normalmente usada para consolidar vários bancos de dados ou como um banco de

dados central de produção de relatórios.

Assinante

¡

IDistribuidor

11LIclPublicador Publicador Publicador

FiguralT-2 Topologia do assinante central.

Outras topologias

Capítulo 17 r Replicação

Muitas topologias de replicação diferentes estão documentadas em várias fontes e cada

uma é simplesmente uma permutação de um publicador central ou de um assinante cen-

tral. Uma das que você vai encontrar é a "topologia bidirecional", que nada mais é do que

dois publicadores centrais empilhados. Não se trata de uma topologia real, mas sim de

uma implementaçáo arquitetônica da replicação transacional. Duas outras "topologias"são um publicador central com um distribuidor remoto e um assinante central com umdistribuidor remoto. Essas "topologias" ainda sáo um publicador central ou um assinantecentral, respectivamente; o local onde o distribuidor estálocalizado é um problema da im-plementaçáo ffsica e nâo faz parte de um diagrama de fluxo de processos empresariais.

Agentes de replicação

Quando começam a trabaThar com replicação, muitas pessoas ficam confusas pela ma-neira como o mecanismo de replicaçâo reage a vários cenários de falha. Afinal, o SQL

Server não sabe como interromper uma transação ou como repetir uma operação.

O fundamental a entender a respeito da replicação é que ela não faz parre do meca-

nismo básico do SQL Server. A replicação opera fora do mecanismo do SQL Server, porintermédio de um conjunto de executáveis conhecidos como agentes de replicação, os

quais tornam o mecanismo de replicação simplesmente outro aplicativo que está se

555

Page 557: Livro_SQL

s56

conectando no SQL Server e processando dados. Como se írata de um aplicativo, omecanismo de replicação é limitado e reage da mesma maneira que qualquer aplicativoque precise estabelecer uma conexáo OLE DB (Object Linking and Embedding Dàtabase)com o SQL Server.

Snapshot AgentO SnapshotAgent ê, naverdade, o snapshot.exe. Esse agente é responsável por extrair oesquema e os dados que precisam ser enviados do publicador para o assinante. O snap-shot.exe é usado em uma replicação de snapshot, transacional e por merge.

Log Reader AgentO Log ReaderAgent,logread.exe, é usado somente na replicação transacional. Ele servepara exftait do publicador as transações efetivadas do log de transação que precisam serreplicadas. Depois de extrair as transações efetivadas, o Log Reader Agent garante quecada transaçáo seja novamente empacotada e gravada no banco de dados de distribui-çáo, exatamente na mesma sequência em que foi executada no publicador. A ordenaçãofeita pelo Log Reader Agent é fundamental para garantir que as transações não sejamaplicadas forade ordem em um assinante.

Distribution AgentO Dístríbutíon Agent, distrib.exe, é usado com replicaçáo de snapshot e transacional. Eletem dois roles: aplicar snapshots e enviar transações. O Distribution Agent é responsávelpor aplicar em todos os assinantes cada snapshot gerado com replicação de snapshotou transacional. Ele também é responsável por aplicar, em todos os assinantes, todas astransações gravadas no banco de dados de distribuição pelo Log Reader Agent.

Merge Agento Merge Agenr, replmerg.exe, é usado na replicação por merge. o Merge Agent aplicao snapshot gerado quando o assinante é inicializado. Ele também é responsável pelaftoca de transações entre o publicador e o assinante.

Queue Reader Agento Queue ReaderAgenf, qrdrsvc.exe, é usado somente quando a opçáo de atualizaçãoenflleirada estiver alivadaparareplicação transacional ou de snapshot. O eueue ReaderAgenté responsável por transferir afila do assinante parao publicador.

Perfis de agenteCada agente de replicaçáo tem numerosos parâmetros de configuraçã,o que afetam seucomportamento. As 72 opções mais comuns são combinadas em uma única unidadechamada pe¡ñl de agente. Algumas das opções mais comuns que você pode configurarsáo as seguintes:

r Poll¡ng interval Controla com que frequência o agente procura novas transaçõespara replicar. O padrão é cinco segundos.

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Page 558: Livro_SQL

I Query timeout Controla quanto tempo o agente espera que uma consulta termi-ne. O padráo é 1.800 segundos.

I Login timeout Controla quanto tempo o agente espera que uma conexáo sejacriada.Opadrão é 15 segundos.

Métodos de replicação

O mecanismo de replicação tem três métodos diferentes que você pode usar parareplicar da-

dos: replicação de snapshot, replicação transacional e replicação por merge (mesclagem).

Replicação de snapshotAreplícação de snapshot pega o conjunto de dados inteiro e o envia durante cada ciclodo mecanismo de replicaçáo. Essa é uma cópia completa dos dados aplicados no assi-nante. As transações que ocorreram no publicador são capturadas e enviadas para umassinante somente na próxima vez que o snapshot é executado.

A replicaçáo de snapshot usa o Snapshot Agent e o Distribution Agent. Quando o snap-shot é iniciado, o SnapshotAgent extrai o esquema e copia os dados com BCP (bulk copyprogram) na pasta de snapshots.

Capítulo 17 r Replicação

NOTA Pasta de snapshots

A pasta de snopshots é um diretório que você especifica ao configurar a replicação, o qualserve como local padrão para um snapshot. Quando você cria uma publicação, pode substituiro local da pasta de snapshots para a publicação específica.

Após extrair o esquema e todos os dados, o Snapshot Agentê, encerrado. Então, o Dis-tribution Agent entra em ação e aplica o snapshot em cada assinante. Durante esse

processo, as tabelas existentes são eliminadas e recriadas apafür dos scripts de esque-ma na pasta de snapshots; entáo, os dados sáo copiados nas tabelas decada assinanteusando BCP

NOTA Aplicando um snapshot

Por padrão, um snapshot aplica no assinante a estrutura da tabela, a chave primária, o índiceclusterizado, constraints exclusivas e dados. Nenhum dos outros objetos relacionados a umatabela, como constraints de verificação e constraints de chave estrangeira, é enviado. Vocêpode anular o comportamento padrão de snapshot modificando as propriedades do artigo.

Quatro opçöes estão disponíveis ao se aplicar um snapshot. A opção padrão é eliminar o obje-to existente e recriá-lo. Você também pode optar por manter a tabela existente intacta, excluiros dados correspondentes ao snapshot recebido ou deixar a estrutura da tabela intacta, mastruncar a tabela para aceitar apenas os dados do snapshot.

Este capítulo presume que você esteja deixando as propriedades de artigo configuradas comas opçöes padrão.

Um diagrama do processo de movimentação de dados por meio de replicação de snap-shot aparece na Figura'1.7 -3.

Page 559: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

A replicação de snapshot rcaliza uma substituição completa dos dados no assinante.Normalmente, ela náo é usada para alta disponibilidade, pois as transações executadasentre as aplicações de um snapshot não são enviadas parao assinante.

Clientes

\\pasta de snapshots

Figura 17-3 Replicação de snapshot.

Replicação transacionalA rephcação transacíonal começa com um snapshot inicial sendo aplicado no assinantepara garantir que os dois bancos de dados estejam sincronizados. À medida que transaçõessubsequentes são executadas no publicador, o mecanismo de replicação as åphca no ãssi-nante. O fluxo de transação incremental do publicador para o assinante torna a replicaçãotransacional uma boa escolha para manter uma cópia de secundário de um banco de dadospara obter disponibilidade ou para descarregar operações de produção de relatórios. A con-figuração mais comum para replicaçáo transacional é em um ambiente servidor-servidor.

Você pode configurar areplicação transacional com dois modos opcionais - assinantes deatualizaçáo imediata e assinantes de atualizaçãto enfileirada - que permitem às transaçõesserem executadas em um assinante. Além de enviar transações de um publicador para umassinante, a replicação transacional pode ser implantada em duas arquiteturas alternati-vas: replicaçáo transacional bidirecional e replicação transacional ponto a ponto.

Replicação por mergeAreplícação por merge (mesclagem) é projetada principalmente para processamento mó-vel, desconectado. Nesse método de replicaçáo, o publicador e o assinante normalmentenão estão conectados o tempo todo, embora isso náo seja obrigatório.

Assim como na replicação transacional, um snapshot inicial é aplicado no assinantepan garantir que ele esteja sincronizado e, então, as alterações subsequentes sáo en-viadas para o assinante. Ao contrário da replicação transacional, a replicação por mergeé, projetada para permitir que alterações sejam feitas tanto no publicador como no assi-nante, por padrão. Então, o mecanismo de mesclagem troca todas as alterações entre opublicador e o assinante durante cada ciclo do agente.

Page 560: Livro_SQL

NOTA Ciclo de um agente

A replicação pode ser configurada para executar em modo contínuo ou programado. Nomodo programado, o agente de replicação é executado periodicamente. Quando configuradono modo contínuo, o mecanismo de replicação está constantemente em execução. Em um ououtro caso, o mecanismo de replicação é sempre executado em um ciclo para determinar se

existem alteraçöes a ser replicadas, movê-las para o assinante e, em seguida, confirmar o rece-bimento das alteraçöes. Esse processo é referido camo ciclo do ogente de replicação. No modoprogramado, o ciclo de um agente é mais evidente, pois o agente começa, executa algum tra-balho e, em seguida, é encerrado. O ciclo é menos evidente no modo contínuo, pois o agentenunca é encerrado. Em vez disso, ele inicia outro ciclo assim que o anterior termina. O ciclo deum agente é um conceito muito importante para se entender uma variedade de cenários quepodem ocorrer - o mais importante dos quais é o conflito de dados.

Conflitos de dados

Os corEflítos de dados podem ocorrer dentro de qualquer ambiente que permita o proces-

samento distribuído de transações. Quando podem ser feitas alterações nos mesmos da-

dos em vários locais, precisa ser criado um mecanismo para gatanlir que as alteraçõessejam tratadas.

Os aplicativos que processam alterações em um único banco de dados jâ têm um mé-todo paru tratar de alterações conflitantes, sobrescrevendo qualquer mudança com aalteração mais recente ou rejeitando a alteraçáo e permitindo que o usuário saiba que os

dados foram alterados desde que foram extraídos. Embora esses processos estejam em

vigor em nível de aplicativo, eles náo ajudam em um ambiente distribuído, pois os apli-cativos estão sendo executados em uma cópia local dos dados. Aalteração conflitantesó ocorre quando o mecanismo de replicaçáo tenta sincronizat Íodas as alterações.

Os conflitos de dados ocorrem somente entre ciclos do agente de replicação, de modoque a frequência é minimizada. Depois que um ciclo do agente de replicação tiver termi-nado, os mecanismos de detecção normais dentro de um aplicativo podem ser usados,pois o conjunto de dados inteiro seria entáo localpara o aplicativo.

Os conflitos de dados ocorrem somente na replicaçáo por merge, na transaçáo replica-

ção com assinantes de atualizaçáo enfileirada, na replicação transacional bidirecionale na replicação transacional ponto a ponto, pois as alterações podem ser processadas

tanto no publicador como no assinante.

Tipos de conflitosPodem ocorrer três tipos de conflitos:

I A inserção de uma chave primária duplicada, que ocorre quando dois usuários in-serem a mesma chave primária no publicador e no assinante

I Uma atualizaçâo conflitante, que ocorre quando dois usuários modificam a mesmalinha no publicador e no assinante

r Uma atualizaçã,o de uma linha inexistente, que ocorre quando um usuário atualizauma linha em um lado da arquitetura de replicação e outro usuário exclui a mesmalinha no oufro lado

Capítulo L7 I Replicação

Page 561: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Solucionadores de confl¡toO mecanismo de replicaçáo ê, obrigado a manter uma única cópia coerente dos dados en-tre o publicador e o assinante. Os conflitos de dados representam um obstáculo significa-tivo para a manutenção da coerência, de modo que a replicação por merge e a replicaçãotransacional com assinantes de attalização enfileirada têm um mecanismo para detecÍ.are solucionar conflitos. A detecção e soluçáo são referidas como soluçã,o de corl¡flíto.

O componente que realiza a solução de conflito é conhecido como solucíonador de con-

;flíto. o SQL Server contém vários solucionadores de conflito incorporados. Os dois maiscomuns, que estão disponíveis tanto para replicaçáo por merge como para replicaçãotransacional com assinantes de atualizaçã,o enfileitada, são os seguintes:

r O publicador sempre vence.

I o assinante sempre vence.

Se você configurar a soluçáo de conflito de modo que o publicador sempre vença, aalteração feita no publicador substituirá a alteração feita no assinante. Nesse caso, aalteraçáo do assinante será descartada no publicador e registrada em uma tabela deconflitos, e a alteraçáo feita no publicador será enviada pan o assinante. Isso faz comque a alteração feita no assinante seja sobrescrita.

Se você tiver configundo a soluçáo de conflito de modo que o assinante sempre vença,aalteraçâo feita no assinante substituirá aalleraçâo feita no publicador.

Qualquer que seja a opção escolhida, essa ação garante que apenas uma cópia coerentedos dados seja mantida na arquitetura de replicaçáo. Contudo, isso cria uma situaçãoempresarial séria. A alteraçâo feita no publicador e no assinante eram transaçóes per-feitamente válidas que foram efetivadas. Outro usuário poderia ter recuperado as in-formações que foram enviadas e tomado uma decisão empresarial com base nos dadosque estavam disponíveis. Então, o mecanismo de replicaçáo troca os dados, detecta umconflito e sobrescreve os dados. Da perspectiva empresarial, a decisão lomada poderiaagora ser inválida.

Os conflitos de dados representam uma situaçáo que precisa ser detectada e resolvida pelomecanismo de replicação para manter uma única cópia coerente dos dados na arquitetu-ra. Contudo, fica por conta do projetista de aplicativos garantir que não ocorram conflitosde dados em ambientes de processamento distribuido, pan manter a integridade das deci-sões empresariais. Os conflitos de dados devem ser uma anomalia em sua empresa.

CUIDADO Transaçöes minimamente registradas

Se um banco de dados está participando da replicação, você deve ser extremamente cuidadocom os modelos de recuperação Registro em massa e Simples. Quando um banco de dados écolocado no modelo de recuperação Registro em massa ou Simples, transaçöes minimamenteregistradas podem ser executadas. Esses tipos de transações registram somente alocaçöes edesalocaçöes de página no log de transação; eles não ativam triggers.

As cinco transaçöes minimamente registradas são as seguintes:

r CREATE INDEX

r TRUNCATE TABLE

Page 562: Livro_SQL

,fl

r BULK INSERT

I BCP

r SELECT...INTO

A replicação envolve apenas três dessas operaçöes - TRUNCATE TABLE, BULK INSERT e BCP

-, pois cada uma delas afeta os dados dentro de uma tabela. Se o banco de dados for colo-cado no modelo de recuperação Simples ou Registro em massa e uma dessas operaçöes forexecutada, o mecanismo de replicação não poderá capturar as alteraçöes, pois a replicaçãotransacional conta com as transaçöes do log de transação e a replicação por merge contacom triggers.

*f t"rt" rápido

1.

2.

3.

4.

Quais são os três métodos de replicaçã,o?

Quais são os cinco agentes usados na replicaçáo?

Quais sáo os três tipos de conflitos de dados?

Quais sáo os dois roles que um banco de dados pode ter dentro de uma arqui-tetura de replicação?

Capítulo L7 r Replicação

5. Quais sáo os componentes básicos da replicaçáo?

Respostas

1. De snapshot, transacional e por merge.

2. SnapshotAgent (snapshot.exe), Log ReaderAgent (logread.exe), DistributionAgent (distrib.exe), Merge Agent (replmerg.exe) e gueue Reader Agent (qrdrs-vc.exe).

3. Inserir uma chave pñmâria duplicada, conflito de atualizaçãto e atualizaçã,o deuma linha inexistente.

Publicador ou assinante.

Um ou mais artigos sáo combinados em uma publicação que forma a basede uma sessão de replicaçáo. Opcionalmente, os artigos podem ter filtrosaplicados.

4.

5.

PRÁTtcA Configurando publicação

Neste exercÍcio, você vai configurar publicação em sua instância de SQL Server.

NOTA Aprendendoreplicação

As práticas deste capítulo configuram um ambiente de replicação usando as configuraçöesque sempre recomendo para o aprendizado de replicação. Você configura o publicador; oassinante e o distribuidot tudo dentro da mesma instância, o que tem o efeito da replicaçãoentre dois bancos de dados na mesma instância. Essa é a maneira mais simples de aprenderreplicação, pois elimina as duas causas mais comuns de problemas de configuração na replica-

ção: segurança e conectividade.

Page 563: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

1. Abra o SQL Server Management Studio (SSMS) e conecte-se em sua instância no

Object Browser.

2. Clique com o botáo direito do mouse no nó Replication e escolha Configure Distri-bution. Clique em Avançar.

3.. Selecione a primeira opção pan sua instância atuaÍ como seu próprio distribuidore, em seguida, clique em Avançar.

4. Deixe a pasta de snapshots conflgurada com o valor padráo e, em seguida, cliqueem Avançar.

5. Deixe o nome e o local do banco de dados de distribuiçáo configurados com os va-lores padrão e, em seguida, clique em Avançar, como mostrado naErgata I7-4.

Figura L7-4 Configuraçöes do banco de dados de distribuição.

6. Certifique-se de que sua instânci a esteja selecionada para o publicador e clique em

Avançar.

Z. Verifîque se a caixa de seleçáo Configure Distribution estâ marcada e clique em

Avançar.

8. Clique em Concluir paraativar a publicaçáo e, em seguida, clique em Fechar.

9. Verifique se agora você tem um banco de dados chamado Distribution criado em

sua instância.

Page 564: Livro_SQL

Resumo da liçãoI Um ou mais artigos podem ser combinados em uma publicação para formar a defi-

nição do conjunto de dados que será movido pelo mecanismo de replicação.

r Um banco de dados pode estar no role de publicador, assinante ou ambos.

r Existem três métodos de replicaçáo: de snapshot, transacional e por merge.

r Cinco agentes realizam todo o trabalho do mecanismo de replicaçáo: o SnapshotAgent, o Log Reader Agent, o Distribution Agent, o Merge Agent e o Queue ReaderAgent.

r Nas situações em que alterações podem ser feitas tanto no publicador como no as-sinante, conflitos de dados podem ocorrer.

Revisão da lição

Responda as perguntas a seguir paratestaÍ seu conhecimento sobre aLição 1. As per-guntas também estáo disponíveis no CD do livro (em inglês) se você preferir revisálasem formato eletrônico.

Capítulo L7 r Replicação

NOTA Respostas

As respostas a essas perguntas e as explicações das respostas estão na seção "Respostas" nofinal do livro.

1. A Contoso Limited precisa implementar uma arquitetura de replicaçáo que mante-nha um servidor de produção de relatórios, enquanto também gararfte que quais-quer alterações feitas nesse servidor não sejam enviadas para o publicador. Queopçáo de replicação seria a melhor solução?

A. Replicação transacional

B. Replicação de snapshot

C. Replicaçáo por merge

D. Replicação ponto a ponto

A Contoso Limited precisa implementar uma arquitetura de replicação que man-tenha um servidor de produção de relatórios. Um pequeno número de alteraçõespode ser feito no servidor de relatório, quando as correções necessárias nos re-latórios precisarem ser enviadas para o publicador. A soluçáo de produção derelatórios precisa estar sempre disponível, mesmo que o publicador esteja offline,enquanto também oferece o melhor desempenho. Qual opção de replicaçâo é amelhor solução?

A. Replicação transacional

B. Replicaçáo transacional com assinantes de atualização imediata

C. Replicaçáo por merge

D. Replicação transacional com assinantes de atualizaçãto enfileirada

563

2.

Page 565: Livro_SQL

Lição 2: Replicação transacional

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

A replicaçáo transacional fornece principalmente a distribuição unidirecional das tran-sações de um publicador para um assinante. Você também pode implantar replicação

transacional em uma variedade de configUrações, assim como com múltiplas opções.

Esta lição explica todas as arquiteturas nas quais você pode implantar rcplicaçáo tran-sacional e algumas das operações internas dessa replicação.

Após esta lição, você será capaz de:

I Projetar uma solução de alta disponibilidade baseada em replicação

I Especificar uma solução de replicação apropriada

t Escolher servidores para replicação ponto a ponto

I Estabelecer uma estratégia para solucionar conflitos de dados

I Projetar a topologia de replicação para arquivar dados

I Especificar as publicaçöes e artigos a serem publicados

I Especificar o distribuidor da publicação

I Especificar o assinante da publicação

Tempo estimado para a lição:45 minutos

Controle de alteraçãoA replicação transacional é gerenciada por dois agentes de replicação: o Log Reader

Agent e o Distribution Agent. O Log Reader Agent é responsável por mover alterações

do log de transação do publicadot para o banco de dados de distribuição. O DistributionAgent é responsável por mover lotes de alterações do banco de dados de distribuiçãopara cada assinante.

Log Reader AgentO Log Reader Agent executa os seguintes passos durante cada ciclo:

1. Conecta-se com o banco de dados de distribuição e recupera a marca d'água da

replícação, o último LSN (Log Sequence Number) durante o ciclo anterior, databelaMslogreader_þístory.

2, Coîecta-se com o log de transaçáo do publicador elocaliza o último LSN.

3. Começa aler apartir do próximo LSN em diante no 1og, até chegar à transaçáo

aberÍ,a mais antiga.

4. Grava transações no banco de dados de distribuição nas tabelasMsrepl_commands

eMsrepl_transacttons, certificando-se de que todas as transações estejam em se-

quência, exatamente na mesma ordem em que foram efetivadas no publicador.

5. Avança a maÍca d' âgla da replicação na tabela MS logreader -þís

tory.

Page 566: Livro_SQL

6. Ativa o flag de replicado no log de transação pan cada transação gravada com su-cesso na distribuiçáo.

7. Registra informações de erro e histórico no banco de dados de distribuiçáo.

Distribution AgentO Distribution Agent executa os seguintes passos durante cada ciclo:

1. Conecta-se com o banco de dados de distribuição e recupera databelaMsdístríbu-tíon_þistory aätima transação apTicada em um assinante.

2. Reúne todas as transações pendentes de um assinante.

3. Empacota as transações em lotes.

4. Conecta-se com o assinante e aplica cada lote de transações.

5. AtualizaaentradanatabelaMsdístríbution_þistory com o último número de se-quência de transação aplicado.

6. Registra informações de erro e histórico no banco de dados de distribuiçáo.

Capítulo 17 r Replicação

NOTA Limpeza do banco de dados de distribuição

O Distribution Agent não apaga diretamente as entradas do banco de dados de distribuiçãoque foram gravadas com sucesso em todos os assinantes. Um job separado (referido comoagente de limpeza) é executado periodicamente para remover as transações que foram en-viadas para todos os assinantes. Esse job é separado por questão de desempenho e permiteque o Distribution Agent envie transaçöes para os assinantes com velocidade muito maisalta do que a do Log Reader Agent atinge para gravar transações no banco de dados dedistribuição. Essa arquitetura de processamento garante que o Distribution Agent não setorne um gargalo no processo, mesmo quando precisa tratar do envio de transaçöes paramuitos assinantes.

565

lmpacto do banco de dadosComo o mecanismo de replicação garanle que as transações gravadas no publicadorsejam recebidas por um assinante,hâum impacto significativo no banco de dados pu-blicado que você deve levar em conta.

Se seu banco de dados está no modelo de recuperação Simples, a parte inativa do 1og éremovida em cada checkpoint.

Normalmente, um backup de log de transaçáo remove a parte inativa do log no finaldo processo de backup. O mecanismo de backup remove aparte inativa do 1og, come-çando no cabeçalho do log e lendo para frente alé encontrar a transaçáo aberta maisantiga. Após atingir a transaçáo aberta mais antiga, o processo de backup termina.Para determinar quais transações estão abertas e quais foram efetivadas, o processode backup lê um flag de bit em cada registro de 1og de transaçáo, que indica se ela foiefetivada ou não.

Page 567: Livro_SQL

566

O mecanismo de replicação precisa garantir que todas as transações gravadas no pu-

blicador cheguem ao assinante. Contudo, o processo de backup de log de transação(ou o processo de checkpoint no modelo de recuperaçáo Simples) pode interferir nesse

processo. Se o SQL Server permitisse que a parte inativa do log fosse removida antesque o Log Reader Agent pudesse gravar as transações no banco de dados de distribui-

ção, as transações poderiam ser perdidas. Por isso, quando um banco de dados estáparticipando da replicação transacional, um segundo fl,ag é ativado dentro de umregistro de log de transação. Um backup de log de transação ainda processa a pafieinativa do log, mas náo pode remover um registro do log até que o flag de efetivaçáo eo flag de replicado estejam ativos. Portanto, se o Log ReaderAgentnáo estâ gravando

transações no banco de dados de distribuiçáo, o log de transação do publicador con-

tinua a crescer, mesmo que os backups de log de transaçáo (ou os pontos de controledo banco de dados no modelo de recuperaçáo Simples) estejam sendo executados.

Esse efeito também significa que a replicação transacional é compatível com qualquer

modelo de recuperaçáo.

O mesmo processo básico ocorre no banco de dados de distribuiçáo. Uma transação náo

é removida do banco de dados de distribuiçáo até que tenha sido gravada com êxito em

cada assinante. O banco de dados de distribuição continua a crescer quando um assi-

nante está offline e inacessível.

Opções transacionaisVocê pode confïgurar areplicaçáo transacional com duas opções: a opção de assinante

de atualização enfileirada e a opção de assinante de atualizaçáo imediata, como mos-

trado na Figxa l7-5.

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

I

I

i

I

I

¡

Publicador

Agente de Leitura de Filas

Assinante de Assinanteatualizaçãoimediata somentele¡tura

Figura 17-5 Replicação transacional.

Assinante deatualização enfileirada

Page 568: Livro_SQL

Opção de assinante de atualização imediataA opçáo de assinante de atualizaçáo imediata permite que sejam feitas alterações no

assinante, que sáo propagadas para o publicador. Entáo, a alteração é capturada pelo

mecanismo transacional e enviada para todos os outros assinantes, mas não é aplicadanovamente no assinante que a originou. Para impedir que a alteraçáo seja enviada de

voltapara o assinante que a originou, uma coluna de timestamp (carimbo de datalhora)é necessária em cada tabela que está participando da replicaçáo.

o processo de aplicaçáo de alterações em um assinante configurado com a opção de

assinante de aasalização imediata é o seguinte:

1. O aplicativo executa a transaçáo no assinante.

2. AÍrigger é ativada.

3. Atrigger recruta o Microsoft Distributed Transaction Coordinator (MS DTC) para

conectar-se no publicador e executa a transação novamente.

4. A transação é efetivada no publicador.

5. A trigger é eÍetivada no assinante.

6. A transaçáo é, efetivada no assinante.

O principal problema nas arquiteturas de alta disponibilidade com asiinantes de atua-lização imediata é que as alterações precisam ser aplicadas no publicador. Se o publica-dor náo estiver disponível, a transaçáo distribuída falharâ. Como a transaçáo distribu-ída estâ sendo executada a partir de uma trigger, a transaçáo inicial também falhañ e

será revertida. Portanto, a opçáo de assinante de atualização imediata é uma opção de

replicação incompatível para alta disponibilidade.

Opção de assinante de atualização enfileiradaA opção de assinante de atualização enfileirad a fambém permite que alterações sejam

feitas no assinante e, entáo, propagadas pan o publicador, mas faz isso por intermédiode um mecanismo muito diferente da opçáo de assinante de atualização imediata.

o processo por meio do qual uma alleração ê aplicada em um assinante usando essa

opçáo é o seguinte:

1. O aplicativo executa uma transação.

2. Aírigger é ativada.

5. A trigger registra atransação em uma fila (uma tabela dentro do banco de dados).

4. Aírigger é efel'Jrvada.

5. A transaçã,o é efetivada.

O Queue Reader Agent transfere periodicamente a fila paÍa o publicador e executa todas

as transações. Uma alteração transferida para o publicador nâo é, aplicada novamenteno assinante que iniciou a transaçáo. Isso exige uma coluna de carimbo de timestamp(datalhora na tabela).

Capítulo 17 r Replicação s67

Page 569: Livro_SQL

Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Por causa do processamento assíncrono de uma atualização enfileirada, podem ocorrerconflitos de dados. Parareduzir os conflitos de dados quando você usa a opçáo de assi-nante de atualização enfileirada em arquiteturas de alta disponibilidade, as alteraçõessáo aplicadas no assinante somente durante um cenário de falha. Isso garante que asalterações sejam sempre feitas em uma única cópia dos dados, permitindo com isso queo processamento de aplicativos normal manipule as alterações conflitantes.

A vantagem da opçáo de assinante de atualizaçáo enfileirad a ê que, quando o publi-cador é colocado novamente online, todas as alterações que ocorreram no assinantedurante a paralisação podem ser descarregadas no publicador automaticamente. Todoplanejamento e processos necessários para retornar nas outras arquiteturas são elimi-nados, pois a opçáo de assinante de atualizaçáo enfileiradatem a capacidade incorpo-rada de atualizar novamente o publicador após um failover. O único passo exigido pararetornar o publicador é apontat novamente os aplicativos.

O ot.o DE E*AME'

Você pode configurar uma publicação transacional com as opçöes de assinante de atualiza-

ção imediata e de assinante de atualização enfileirada. A opção de assinante de atualizaçãoenfileirada pode ser usada como um mecanismo de failover quando o publicador não estiverdisponível.

Arquiteturas transacionaisVocê pode configurar replicação transacional em duas arquiteturas comuns, além daoperação unidirecional normal, que é o paüáo. Você não deve confundir cada umadessas arquiteturas com nenhum outro dispositivo dentro do mecanismo de replicaçáo.Essas arquiteturas ainda implementam replicação transacional unidirecional normal,sem qualquer opção de atualização. A implementação é feita de modo a fazer com queas alterações fluam entre o publicador e o assinante, mas ainda se ftata do mecanismotransacional.

O mecanismo transacional não detecta nem soluciona conflitos de dados. Portanto, se

você pudesse processar alterações tanto no publicador como no assinante que gerassemum conflito de dados, não poderia implementar replicaçáo transacional em uma arqui-tetura bidirecional ou ponto a ponto.

Replicação ponto a pontoA replicação ponto a ponto é uma arquitetura introduzida no SQL Server 2005 e queestá disponível somente na edição Enterprise. A arquiteturabâsica permite que a repli-caçâo lransacional mova dados entre dois ou mais pontos. Um diagrama da arquiteturaponto a ponto aparece na Figura 17-6.

Page 570: Livro_SQL

Capítulo L7 r Replicação

Figura 17-6 Replicação transacional ponto a ponto.

A replicação ponto a ponto é uma implementaçáo da replicação transacional. A ideiabâsica é que você pode pegar um conjunto de tabelas e replicá-las de BancoDeDadoslpara BancoDeDados2 usando replicação transacional. Então, você cria uma publicaçáosobre o mesmo conjunto de tabelas emBancoDeDados2 e as replica emBancoDeDadoslusando replicaçáo transacional.

Na verdade, cada banco de dados participante de uma arquitetura ponto a ponto replicatodas as alterações em todos os outros bancos de dados. Para impedir que as transaçõesentrem em um loop infinito em torno da arquitetura, você deve ter uma coluna rowguídem cada uma das tabelas participantes da replicação, que permita ao mecanismo iden-tificar o banco de dados de origem da transaçáo.

A replicação ponto a ponto tem uma lista muito rigorosa de requisitos que precisam sersatisfeitos:

a Cada ponto deve ter seu próprio distribuidor.

I Ä estrutura da tabela deve ser exatamente a mesma entre todos os pontos.

r Não estão disponíveis opções de atualizaçãto enfileirada e imediata.

r Não pode ocorrer nenhum conflito de dados.

569

Replicação bidirecionalA replicação bidirecional é ligeiramente diferente da replicação ponto a ponto na ma-neira como é configurada. Essa arquitetura aindaé uma replicaçáo transacional. O con-junto de tabelas que está sendo replicado deBancoDeDadosl paraBancoDeDados2 ê omesmo conjunto de tabelas que está sendo replicado de BancoDeDados2 pan BancoDe-Dadosl , como mostrado naFrgalø 77-7.

Page 571: Livro_SQL

570 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

Publicador/Assinante

Figura L7 -7 Repl icação tra nsaciona I bid i recional.

Para impedir que as transações fiquem em loop entre os dois bancos de dados, você

também deve adicionar o parâmetro @loopbacþ_detectíon em cada assínatura..

Embora a replicaçáo bidirecional possa ser realizada como um subconjunto da replica-

ção ponto a ponto, você obtém algumas vantagens no desempenho quando implementaesse tipo de replicaçáo. Você não precisa de um distribuidor separado para cada publica-dor nem de uma coluna rowguíd nas tabelas participantes da replicação. As estruturasde tabela podem ser diferentes, embora eu nunca tenha encontrado isso.

Os conflitos de dados não sáo tratados e você deve implementar uma arquifetwabidi-recional usando código. Você não pode implementar essa arquiletura usando uma GUI

pan gerar qualquer um dos componentes.

MonitoramentoNormalmente, você usa o Replication Monitor para monitorar as arquiteturas de replica-

ção. Dentro do Replication Monitor, você pode obter estatísticas sobre o estado operacionalde todas as publicações, assinaturas e agentes. Você também pode ver informações de erro

e histórico de status para solucionar quaisquer problemas que possam estar ocorrendo.

Uma das perguntas mais diffceis de responder em um ambiente replicado nas versõesanteriores do SQL Server estava relacionada aos gargalos . Era razoavelmente simplesdeterminar de quantas transações o mecanismo de replicaçáo estava por trás na mani-pulaçáo, executando o procedimento atmazenado (stored procedure) de sisÍema sp_bro-wsereplcmds, encontrada no banco de dados de distribuiçáo. Contudo, era impossíveldeterminar quanto tempo demoraria para o mecanismo de replicaçáo pôr-se em dia, pois

as informações de cronometragem náo eram mantidas pelo ambiente.

Quando as alterações sáo movidas pelo Log Reader Agent e pelo Distribution Agent,

o mecanismo mantém estatísticas sobre a velocidade de movimentação dos dados e

quanto tempo levarâ para movê-los. Usando essas estatísticas, o Replication Monitor

Page 572: Livro_SQL

pode exibir informações contínuas que mostram quantas transações ainda precisam ser

enviadas para os assinantes, assim como aproximadamente quanto tempo demorarâpara pôr-se em dia.

Embora as estatísticas do Replication Monitor forneçam boas informações de statuspara determinar quanto os assinantes estão atrasados, elas não fornecem detalhes mais

refinados. O Replication Monitor exibe uma única estatíslica da latência, mas os admi-nistradores não podem saber se o gargalo está no Log Reader Agent ou se o DistributionAgent está fazendo backup. Assim, também foram introduzidos sinais investigadorespara fornecer esses detalhes.

tJm sínal ínvestígador (trccer token) é uma transação especializada, executada para omecanismo de replicação. Ele é enviado para o log de transaçáo, como qualquer outralransação. Os agentes de replicação movem o sinal investigador pela arquitetura exa-

tamente como fazem para qualquer outra transaçáo. O que torna o sinal investigadorespecial, contudo, é que o mecanismo de replicação reconhece a ffansação especial e

registra estatísticas de cronometragem à medida que ele se move pela arquitetura. Com

um sinal investigador, você pode obter cronometragens exatas do tempo que demoroupara mover o sinal atê o banco de dados de distribuição e quanto tempo demorou para

ser enviado a cada assinante; você também pode obter um agregado dalatência globalde um publicador para cada assinante.

Com essas informações, agota é possível isolar e corrigir quaisquer gargalos dentro da

arquitetura de replicação.

Validação

O mecanismo de replicaçáo garante que as transações se movam do publicadot paÍa oassinante na mesma ordem em que foram originalmente efetivadas. Como o publicadore o assinante normalmente sáo bancos de dados em diferentes instâncias do SQL Server,

que podem estar separadas geograficamente, sempre fica a pergunta: como você sabe se

os dois bancos de dados estão sincronizados?

O mecanismo de replicaçáo fornece um dispositivo para validar o sincronismo. São forneci-

dos dois procedimentos armazenados (stored procedure) de sistema pararealizar avalída-

çãot sp jtublícatton_valídation esp_article-validatton. Sp jublicatíon_valídation simples-mente executa sp_artícle_valídatíon para todos os artigos dentro de uma publicação.

Cada uma dessas procedures pode realizar uma validação usando dois métodos dife-rentes:

r Somente contagem de linha

r Contagem de linha e soma de verificaçáobinâria

O modo de validação padrão é realizar apenas uma contagem de linha. Esse método faz

uma verificação apenas para garantir se o número de linhas é o mesmo entre o publi-cador e o assinante. O conteúdo das linhas poderia ser completamente diferente; isso

não seria detectado com esse método de validação. Contudo, como os bancos de dadosestáo participando da replicaçáo, é extremamente improvável que tabelas com a mesmacontagem de linha náo contivessem também os mesmos dados.

capítulo L7 r Replicação 571

Page 573: Livro_SQL

572 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

A validação mais ampla é, fazer uma contagem de linha e uma soma de verificaçá o biná-ria. A contagem de linha de cada tabela é, comparada entre o publicador e o assinante.Além disso, uma soma de verificaçãobinâria é calculada e comparada. Esse método devalidação detecla quaisquer diferenças no número de linhas, assim como no conteúdodas linhas. Contudo, éuma operação muito dispendiosa que causa sobrecarga depro-cessamento. Por causa da quantidade de sobrecarga exigida, você só deve executar essetipo de validação raramente.

MELHORES PRATICAS

A validação pode causar muita sobrecarga, particularmente em ambientes com grandes nú-meros de assinantes em uma única publicação ou com publicaçöes que contêm um grandenúmero de artigos. É mais comum realizar uma validação apenas com contagem de linña dia-riamente, enquanto se deixa a validação com contagem de linha e soma de verificação bináriapara uma execução semanal.

fteste rápido

1. Cite duas opções parareaTizar replicaçáo transacional.

2. Cite duas arquiteturas para realízar replicação transacional.

3. Qual fiansação especial estâ agora disponível para replicaçáo transacional,que fornece estatísticas de cronometragem?

4. Quais sáo as duas procedures utilizadas para validar se um publicador e umassinante estão sincronizados?

Respostas

1. Assinantes de atualização imediata e assinantes de atualização enfileirada.

2. Ponfo a ponto e bidirecional.

3. Sinais investigadores.

4. s p j ub lica t[o n _val ída tí o n e s p _artí cle _v a,lí da tío n.

PRÁT¡cA lmplementando replicação transacionalNos exercícios a seguir, você vai configurar replicaçáo transacional usando o banco dedado s Altl1han s a c t í o n a l .

Neste exercício, você vai criar uma publicaçáo.

7. Abra o SSMS e conecte-se na instância que você está usando parareplicação.

2. Crie um banco de dados chamadoAWTranSubscríber na mesma instância do bancode dado s AWITan s ac tío n al .

3. Se necessário, expanda Replication. Clique com o botão direito do mouse em LocalPublications e escolha New Publication. Clique em Avançar.

Page 574: Livro_SQL

4.

5.

6.

Selecione o banco de dadosAWT\ansactional e clique em Avançar.

Selecione Transactional Publication e clique em Avançar.

Selecione todas as tabelas e todas as funções definidas pelo usuário (UDFs), comomostrado na Figura 77-8, e clique em,Vançar.

Capítulo 17 r Replicação 573

Figura 17-8 Selecionando artigos.

NOTA UDFs

Você inclui as UDFs dentro da publicação porque existem tabelas dentro do banco de dadosAdventureWorks que têm constraints definidas com uma UDF. Se elas ainda não estiveremcriadas no assinante ou adicionadas na publicação, ocorrerá uma falha quando o snapshot foraplicado.

7.

8.

Você não quer aplicar filtros; portanto, clique em Avançar.

Marque a caixa de seleção Create A Snapshot Immediately And Keep The SnapshotAvailable To Initialize Subscriptions e clique em Avançar.

Clique em Security Settings.

Selecione Run Under The SQL Server Agent Service Account, selecione By Imper-sonating The Process Account e clique em OK.

9.

10.

Page 575: Livro_SQL

574 Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

CUIDADO Configuraçöes de segurança de agente

Não é recomendado executar os agentes de replicação sob a conta de serviço do SQL ServerAgent. As contas de agente de replicação devem ter permissöes mínimas em seu ambientee a conta de serviço do SQL Server Agent eleva essas permissöes. O SQl Server Books Onlinetem vários artigos mu,ito bons sobre configuração de segurança de replicação. Você estáviolando explicitamente as melhores práticas de segurança nos exemplos muito específicosdeste capítulo e está fazendo isso por um motivo muito bom. Este capítulo é sobre o apren-dizado dos fundamentos da replicação e como ela pode se encaixar em seu ambiente. Oobjetivo deste capítulo é familiarizar-se com o mecanismo de replicação, antes de implantá-lo em várias instâncias com variados requisitos de segurança e bloqueando todo o acesso.Se você não entender o funcionamento básico do mecanismo, antes de aplicar toda a segu-rança nos agentes, terá dificuldade para saber se os erros que encontrará são decorrentesde uma situação que você gerou, uma configuração errada ou da segurança bloqueando oacesso. Você não deve executar agentes de replicação com essa configuração em um am-biente de produção.

I 1. Clique em Avançar. Verifique se a caixa de seleção Create The Publication está mar-cada. Clique emAvançar.

12. Dê um nome à publicação e, em seguida, clique em Concluir.

13. Quando o New Publication Wtzard concluir a criaçâo da publicação, clique em Fe-

char.

Neste exercício, você vai criar uma assinaturaparu a publicaçáo que criou no Exercício 1.

1. Expanda Local Publications, clique com o botão direito do mouse na publicação que

você acabou de criar e escolha New Subscriptions. No New Subscription Wizard,clique em Avançar.

2. Verifique se sua publicação está selecionada e clique emAvançar.

5. Veriflque se Run All Agents At The Distributor está selecionado e clique em Avançar.

4. Marque a caixa de seleção ao lado de sua instância e selecione o banco de dadosAWIhanSubscríber na lista suspensa Subscription Database. Clique em Avançar.

5. Na pâgina Distribution Agent Security, clique no botão de reticências ao lado de seuassinante na janela Subscription Properties.

6. Selecione Run Under The SQL Server Agent Service Account, junto com as duasopções de By Impersonating The Process Account, abaixo de Connect To The Dis-tributor e de Connect To The Subscriber. Clique em OK e, em seguida, clique emAvançar.

7. Na página Synchronization Schedule, certifique-se de que a configuração de AgentSchedule seja Run Continuously (que é o padr'en) e clique em Avançar.

8. Certifique-se de que a configuração de Subscription Properties seja lnitialize Imme-diately e clique em Avançar.

Page 576: Livro_SQL

9. Verifique se a caixa de seleção Create Subscription(s) estâmarcada. Clique emAvan-

çar e, em seguida, clique em Concluir.

10. Quando a assinatura estiver criada, clique em Fechar.

Neste exercício, você vai usar o Replication Monitor para vü informações sobre suapublicaçáo e assinatura, e praticar o uso de sinais investigadores.

1. No Object Explorer, clique com o botáo direito do mouse no nó Replication e escolhaLaunch Replication Monitor.

No Replication Monitor, inspecione as várias seleções e guias paraveÍ as informa-

ções que agora estâo disponíveis na publicação e na assinatura que você criou.Clicar com o botáo direito do mouse em uma entrada permite que você veja as pro-priedades do objeto ou mais detalhes.

2.

5. Pratique a colocação de sinais investigadores e observe os resultados.

Resumo da lição

Capítulo l-7 r Replicação

I A replicação transacional usa o Log Reader Agent para mover transações do log de

transação do publicador para o banco de dados de distribuição. Então, o DistributionAgent move as transações do banco de dados de distribuição para cada assinante.

r A replicação transacional distribui dados em uma única direção - do publicadorpara o assinante. Podem ser configuradas duas opções, chamadas assinantes de

atualização imediata e assinantes de atualização enfileirada. Essas opções permi-tem que as transações sejam executadas em um assinante e propagadas para o

publicador.

r A replicaçáo transacional pode ser configurada em três arquiteturas diferentes. Aarquitetura padráo é ter um único publicador com um ou mais assinantes. Alter-nativamente , a replicaçã,o transacional pode ser configurada com uma arquilelurabidirecional ou ponto a ponto.

r Sinais investigadores permitem que um administrador reúna estatísticas de cro-nometragem dentro da replicação, do publicador para o distribuidor e também do

distribuidor para o assinante, para monitorar alalência ponto a ponto.

Revisão da lição

Responda a pergunta a seguir para testar seu conhecimento sobre a Liçáo 2. Apergantatambém está disponível no CD do livro (em inglês) se você preferir revisála em formatoeletrônico.

575

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

Page 577: Livro_SQL

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

1. A Datum Corporation é, especializada em serviços de processamento de cartâo de

crédito e seus sistemas precisam manter mais de 99,999Yo (cinco números 9) de

disponibilidade. Ao mesmo tempo, o volume de gravaçã,o supera a capacidade do

hardware atuaT e a capacidade projetada do novo hardware que foi proposto. osfuncionários determinaram que, se as gravações pudessem ser colocadas em lotesde alguma maneira, enquanto as operações de leitura fossem descarregadas em

outro servidor ao mesmo tempo, o novo hardware proposto forneceria capacidadesuficiente para os próximos dois ou três anos. Pataobter a capacidade e gravação e

failover necessárias, eles precisam implantar cinco servidores separados geografi-

camente e mais dois servidores que podem ser usados como failover e como seryi-dor primário para operações de leitura. Qual é a melhor escolha de tecnologia para

satisfazer essas necessidades empresariais?

A.

B.

c.

D.

Espelhamento de banco de dados

Replicaçáo transacional em uma configuraçáo de publicador central

Replicação transacional em uma configuração ponto a ponto

Replicação transacional em uma configuração de assinante de atualizaçáo en-

fileirada

Page 578: Livro_SQL

Lição 3: Replicação por mergeA replicação por merge é uma aTternativa que pode ser aplicada para sistemas de altadisponibilidade. A replicaçáo por merge foi projetada principalmenle para usuários mó-

veis, desconectados. Por transferência, os mecanismos játforam incorporados para que

as alterações ocorram em qualquer lugar e sejam sincronizadas, assim como possam

resistir às falhas e continuar processando. Esta liçáo descreve os mecanismos internosque existem para replicação por merge e como aplicá-los para tornar seus sistemas mais

disponíveis.

Após esta lição, você será capaz de:

I Projetar uma solução de alta disponibilidade baseada em replicação

I Especificar uma solução de replicação apropriada

I Estabelecer uma estratégia para solucionar conflitos de dados

Tempo estimado para a lição:45 minutos

Controle de alteraçãoO processo de controle de alteraçâo na replicação por merge é o seguinte:

1. o aplicativo executa umatraîsação.

2. Atrigger quehâ por trás databela é ativada.

Capítulo L7 r Replicação

5. Uma inserção ou atualizaçáo é registrada em MSmerge-contents, enquanto umaexclusáo é registrada em Msmerge _tombs tone.

4. AÍriger é efetivada.

5. A transaçáo ê, efeúvada.

Ao contrário da replicação transacional, a replicação por merge não move cópias dos

dados para um banco de dados de distribuição. O registro que ocorre dentro de MSmer-ge_contents eMsmerge_tombstone indica apenas que uma alleraçáo foi feita em umalinha específica. Os dados reais envolvidos na alteraçáo náo sáo copiados; eles residem

apenas na tabela. Isso cria um efeito interessante.

Se 10 transações separadas fossem executadas na mesma linha entre os ciclos do meca-

nismo de replicação e atabela fosse configutz;da com replicaçáo transacional, todas as

1O transações seriam movidas pan o banco de dados de distribuiçáo pelo Log Reader

Agent e, em seguida, todas as 10 seriam subsequentemente aplicadas no assinante. oresultado seria que 9 transações seriam aplicadas, somente para serem substituídaspela 1Oa transação nessa linha. Contudo, se a tabela fosse configurada com replicaçãopor merge, somente o último estado da linha (o estado após a 70a lransaçáo) seria mo-

vido para o assinante. Isso é realizado pelo uso do seguinte processo para sincronizaralterações:

1. O mecanismo de merge conecta-se com o assinante.

2. O mecanismo de merge conecta-se com o publicador.

577

Page 579: Livro_SQL

578 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

3. O mecanismo de merge interroga a tabela Msmergegenhístory do assinante paradeterminar a lista de gerações que não estão presentes no publicador.

4. Então, o mecanismo de merge extrai a lista de tabelas e linhas contidas emMsmer-ge_contents e MSmerge_tombstone para obter as gerações que o publicador nãotem.

5. O mecanismo de merge constrói instruções DELEIE apartir das linhas extraídas deMSmerge_tombstone.

6. O mecanismo de merge extrai o conteúdo das linhas das tabelas de base do bancode dados e empacota as alterações em lotes.

7. As alteraçóes empacotadas sáo aplicadas no publicador.

8. As gerações enviadas ao publicador sáo registra das em Msmerge_contents .

9. Os conflitos sáo detectados e solucionados.

10. O mecanismo de merge interroga atabelaMsmergegenhistory do publicador paradeterminar a lista das gerações que não estáo presentes no assinante.

11. Entáo, o mecanismo de merge extrai a lista de tabelas e linhas contidas emMS-merge_contents e Msmerge_tombstone para obter as gerações que o assinante nãotem.

12. O mecanismo de merge constrói instruçoesDELETE apartir das linhas extraídas deMsmerge_tombstone.

15. O mecanismo de merge ex[rai o conteúdo das linhas das tabelas de base do bancode dados e empacota as alterações em lotes.

74. As alterações empacotadas sáo aplicadas no assinante.

15. As gerações enviadas ao assinante sáo registradas emMsmerge_contents.

Um diagramabâsico da replicaçáo por merge com o processo de sincronismo apaÍecenaFigura 77-9.

Cl¡entes Distribuidor

s

Figura 17-9 Replicação por merge.

Page 580: Livro_SQL

O processo de merge tem um efeito muito simples. Sempre que o mecanismo de merge

é executado, ele faz um pedido básico paÍa o publicador e pan o assinante: "Mande-

me tudo que eu ainda não tenho". Esse pedido, simples como é, tem um efeito muitopoderoso.

o mecanismo transacional armazena as alterações que precisam ser feitas e depoisas encaminhapara o assinante. Quando uma alteraçáo é aplicada, ela ê, removidado mecanismo de replicação. Isso faz a rcp7icação transacional operar somente nas

alterações que jâ estão em sua fila para processa\ fazendo-a tomar conhecimentoapenas do ponto atual no tempo em diante. O mecanismo de merge simplesmentenáo reconhece quando uma alteração foi feita ou onde foi feita. O mecanismo de

merge tem a capacidade de tomaÍ conhecimento de tudo que aconteceu no passado

e move apenas as alteraçõesque jâ não existem. Basicamente, as tabelas de meta-dados subjacentes ao mecanismo de merge sáo como uma caixa preta que explicacada alteraçáo que ocorreu no banco de dados desde que o gravador (mecanismo de

merge) foi ligado.

É exatamente esse processo que torna o mecanismo de merge táo flexível. Toda al-teração é registrada em Msmerge_contents , Msmerge _tombstone e Msmergegenhís-tory. Não importa se a alteraçáo foi aplicada pelo mecanismo de replicação ou se foiexecutada apartir de um aplicativo; as tabelas de metadados de merge simplesmenteregistram tudo.

Uma das dificuldades do mecanismo transacional é que as alterações são espalhadaspor três componentes completamente separados: o log de transação do publicador, o

banco de dados de distribuiçáo e o assinante. Assim, é extremamente diffcil fazerba-ckup e restaurar o estado do sistema de modo que a replicação ainda funcione.

A replicação por merge elimina esse problematambém. As tabelas de metadados de mer-

ge estão localizadas no mesmo banco de dados que os artigos que você está publicando.Portanto, quando você Íaz backup do banco de dados, faz obackup dos metadados de

merge ao mesmo tempo; eles estarão sincronizados com o conteúdo do banco de dados.

Você pode então restaurar literalmente qualquer backup do banco de dados desde que

a publicação por merge começou a replicar alterações e deixar por conta do mecanismode merge determinar o que nazer. Não importa de onde originaram as alterações - o

mecanismo de merge simplesmente determina quais gerações não estáo presentes nopublicador ou no assinante e, entáo, envia tudo que náo está presente. Você náo precisa

se preocupar com a restauração do sistema para um estado em particular, pois o meca-

nismo de merge determina isso sozinho.

Ao longo da discussáo sobre controle de alteração e sincronismo, as gerações forammencionadas várias vezes. As tabelas de metadados de merge contêm um históricocompleto de todas as linhas que foram alteradas desde que a replicaçâo por merge

foi iniciada. Interrogar os metadados quanto a alterações linha por linha é muito ine-ficiente. Para reduzir a quantidade de sobrecarga, o mecanismo de merge empacota

as alterações em lotes chamados gerações, os quais sáo aplicados na base do tudoou nada entre o publicador e o assinante. O mecanismo de replicaçáo pode procuraralterações pan aplicar com base nas gerações que ainda não existem no publicadorou no assinante.

capítulo 17 r Replicação 579

Page 581: Livro_SQL

580

Validação

Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 2008

A validação de uma publicação por merge é muito parecida com a validação na replica-çáo transacional. A validaçáo pode ser executada em dois modos diferentes: somentecontagem de linha e contagem de linha mais uma soma de verificaçáo. A operação e asobrecarga são iguais às descritas anteriormenfe para replicação transacional.

Você pode executar sp valídatemergepublícation paravalidar uma publicação inteira ousp-valídatemergesubscríptíon para validar um único assinante; ou então, pode adicio-nar a opção -Valídate no agente de merge.

t'teste rápido

1. Quais duas tabelas permitem que a replicaçã,o por merge determine as altera-ções que precisam ser sincronizadas entre publicador e assinante?

2. Que recurso toÍîa a replicação por merge mais resistente às paralisações?

Respostas

l. MSmerge _contents e Msmerge genhís tory.

2. o mecanismo de merge usa os metadados para determinar as alterações que pre-cisam ser aplicadas. como o publicador e o assinante mantêm um histórico com-pleto de todas as alterações e os metadados sáo armazenados dentro do mesmobanco de dados participante da replicação, os processos de backup/restauraçãomantêm os metadados sincronizados com os dados que estão sendo replicados,Isso garante que o mecanismo de merge possa se recuperar, mesmo de uma ope-raçáo de restauração, e voltar a se sincronizar de forma incremental.

PRÁTlcA lmplementando replicação por mergeNos exercícios a segui¡ você vai configurar a replicaçáo por merge usando o banco dedadosAWMerge.

Neste exercício, você vai criar uma publicação por merge.

1. Crie um banco de dados chamado A'lVMergeSubscriber na mesma instância do ban-co de dados,{WMerge.

2. No Object Explorer, clique com obotão direito do mouse no nó Replication e escolhaNew, Publication. Clique em Avançar.

5. Selecione o banco de dados AWMerge e clique em Avançar.

4. Selecione Merge Publication e clique em Avançar.

5. Verifique se a caixa de seleção SQL Server 2OO8 está marcada e clique em Avançar.

6. Selecione todas as tabelas e UDFs, exatamente como fez ao criar a publicação tran-sacional nos exercícios da Liçáo 2, e clique em Avançar.

Page 582: Livro_SQL

7 . Clique em Avançar novamente. Você náo vai ftltrar nenhuma linha; portanto, cliqueem Avançar uma terceiravez.

8. Verifique se a caixa de seleçáo Create A Snapshot Immediately está marcada e des-marque a caixa de seleçáo Schedule The Snapshot Agent To Run At The FollowingTimes. Clique em Avançar.

9. Especifique configurações de segurança, como você fez ao criar uma publicaçãotransacional, e clique em Avançar.

10. Verifique se a caixa de seleçáo Create The Publication está marcada e clique emAvançar.

:

l

17. Especifique um nome para sua publicaçáo e clique em Concluir. Quando a publica-

çáo terminar de ser criada, clique em Fechar.

Inspecione o banco de dadosAWMerge pataver todas as alterações que foram feitasnas triggers, procedimentos afmazenados (stored procedure), estruturas detabela,índices e views para suportar o controle de alteraçáo na replicaçáo por merge.

12.

Capítulo L7 r Replicação

Neste exercício, você vai criar a assinatura na publicação por merge.

1. Expanda Local Publications, clique com o botáo direito do mouse na publicação quevocê acabou de criar no exercício anterior e escolha New Subscriptions.

2. Selecione sua publicação por merge e clique em Avançar.

3. Verifique se a opçáo Run All Agents At The Distributor está selecionada e clique emAvançar.

4. Matque a caixa de seleção ao lado de sua instância e selecione o banco de dadosAWMergeSubscríber nalista suspensa Subscription Database. Clique em Avançar.

5. Clique no botão de reticências ao lado de seu assinante na janela Subscription Pro-perties.

6. Selecione a opção Run Under The SQL Server Agent Service Account, junto com asduas opções de By Impersonating The Process Account. Clique em OK e, em segui-da, clique em Avançar.

7. Na página Synchronization Schedule, selecione Run Continuously na lista suspen-sa Agent Schedule e clique em Avançar.

8. Certifique-se de que a configuração de Subscription Properties seja lnitialize Imme-diately e clique em Avançar.

9. Certifique-se de que a configuração de Subscription Type Ofserver esteja com prio-ridade 75.00 (o padráo). Clique emAvançar.

1O. Verifique se a caixa de seleção Create Subscription(s) está marcada. Clique em Avan-çar e, em seguida, clique em Concluir.

11. Quando a inscrição estiver criada, clique em Fechar.

581

Page 583: Livro_SQL

582 Kit de Treinamento MCTS (Exame 70-432): Microsoft SQL Server 2008

t2- Use o Replication Monitor para inspecionar os agentes, o histórico e as mensagensde erro.

Inspecione o banco de dados AWMergeSubsciber paÍa vü os objetos criados quan-do o snapshot foi aplicado.

Faça alterações no publicador e no assinante e observe como os dados se movem nomecanismo.

lntroduza conflitos de dados e observe como eles são detectados e solucionados.

t3-

14.

15.

Resumo da lição

I O mecanismo de merge fornece um dispositivo muito poderoso e flexível para distri,buir alterações, pois foi projetado para usuários móveis, desconectados.

r As especificações de projeto paralralar de usuários móveis, desconectados, podemser aplicadas em um ambiente servidor-servidor, pois o mecanismo de merge jâ estâcodificado para manipular quantidades significativas de tempo de paralisaçáo e

sincronismo de dados imprevisível.

r O controle de altençã,o ocorre em um conjunto de tabelas de metadados que estãodentro do mesmo banco de dados que está sendo publicado ou assinado.

I Como o publicador e o assinante mantêm uma cópia completa de todas as alte-rações feitas, o mecanismo de merge pode fazet um pedido simples duranfe cadaciclo: "Mande-me tudo que eu aindanã,o tenho'.

Revisão da lição

Responda a pergunta a seguir parulestar seu conhecimento sobre aLiçáo 3. A perguntatambém está disponível no CD do livro (em inglês) se você preferir revisá-la em formatoeletrônico.

NOTA Respostas

A resposta a essa pergunta e a explicação da resposta estão na seção "Respostas" no final dolivro.

1. O Messenger consolidado distribui pacotes entre empresas no centro da cidade deAbcCity. Os pedidos sáo recebidos no escritório central e mensageiros com patins re-cebem instruções de coleta e entrega por intermédio de dispositivos equipados comMicrosoft Pocket PC, os quais usam replicação por merge para sincronizar os dados.Quando os pacotes sáo recebidos e entregues, o mensageiro pega a assinatura docliente, o que acarreta uma atualização no registro de pedido. Equipamentos GpS(sistema de posicionamento global) transportados nas mochilas dos mensageirostransmitem dados de localização continuamentepara o escritório, paraque o anda-mento da entrega possa ser monitorado. Como as alterações ocorrem nos mesmosdados de pedido no escritório central e no mensageiro, como você deve projetar obanco de dados, a replicaçáo e a solução de conflitos?

Page 584: Livro_SQL

A. Uma tabela contendo o pedido de entrega e informações de recepçãolenÍrega,uma publicaçáo do escritório central para os mensageiros e solução de conflitoo publicador sempre vence

Uma tabela contendo o pedido de entrega e informações de recepçãolentÍega,uma publicação do escritório central para os mensageiros e soluçáo de conflitoo assinante sempre vence

Uma tabela contendo o pedido de entrega e informações de recepçã olenlrega,uma publicação de cada mensageiro para o escritório central e solução de con-flito o publicador sempre vence

Uma tabela para o pedido de entrega e uma tabela para as informações de re-

cepção/entrega, vma publicaçáo do escritório central para cada mensageiro e

soluçáo de conflito o publicador sempre vence

Uma tabela para o pedido de entrega e uma tabela para as informaçóes de

recepçáo/entrega, uma publicação do escritório central para cada mensageirocom os dados do pedido de entrega, uma publicaçáo do escritório central para

cada mensageiro com os dados de rccepçãolentrega, solução de conflito o pu-blicador sempre vence na publicação de pedido de entrega e solução de conflitoo publicador sempre vence nos dados de recepçáolentrega

Uma tabela para o pedido de entrega e uma tabela para as informações de

recepção/entrega, uma publicação do escritório central pancada mensageirocom os dados do pedido de entrega, uma publicação do escritório cenftal paracada mensageiro com os dados de recepçáolentrega, soluçáo de conflito o pu-blicador sempre vence na publicaçáo de pedido de entrega e soluçáo de conflitoo assinante sempre vence nos dados de recepçãolentrega

B.

c.

D.

E.

Capítulo L7 r Replicação 583

Page 585: Livro_SQL

Revisão do capítulo

Kit de Treinamento MCTS (Exame 70-432): Microsoft.SQl Server 2008

Parareforçar o que aprendeu neste capítulo, você pode:

I Ler o resumo do capítulo.

r Examinar a lista de termos-chave introduzidos neste capítulo.

r Completar o cenário de caso. Esse cenário aborda situações reais que envolvem ostópicos deste capítulo e solicita que você crie uma solução.

r Completar as práticas sugeridas.

f Fazer um teste.

Resumo do capítulor A replicaçáo transacional com assinantes de atualizaçáo imediata não é uma solu-

çáo v6'lida para alta disponibilidade, pois quando o publicador está indisponível, asalterações náo podem ser processadas no assinante.

r A replicaçáo transacional com assinantes de atualizaçáo enfileirada e replicaçãopor merge são escolhas muito boas para alta disponibilidade, pois cada uma já esfá,configurada para permitir que transações sejam executadas no publicador ou noassinante.

r A replicaçáo transacional em uma configuração bidirecional ou ponto a ponto podeser implantada para alta disponibilidade, mas você deve garantir que não possamocorrer conflitos de dados.

Termos-chave

Você sabe o que estes termos-chave significam? Confira suas respostas consultando oglossário no final do livro.

r Perfil de agente

I Artigo

r Filtro de coluna

I Solucionador de conflito

r Conflito de dados

r Distribution Agent

r Distribuidor

r Filtro dinâmico

r Geração

r Filtro de junção

Page 586: Livro_SQL

IT

T

T

T

IIT

IT

T

IIIT

IT

T

T

Log Reader Agent

Merge Agent

Replicação por merge

Publicação

Publicador

Queue Reader Agent

Reinicialização

Topologia de replicaçáo

Marca d'âgua de replicaçáo

Republicador

Filtros de linha

Snapshot Agent

Pasta de snapshots

Replicação de snapshot

Assinante

Assinatura

Sinal investigador

Replicação transacional

Validação

Capítulo L7 I Replicação 585

Cenário de caso

No cenário de caso a seguir, você vai aplicar o que aprendeu neste capítulo. As respostasdessas questões podem ser encontradas na seçáo "Respostas", no final deste livro.

Cenário de caso: Planejamento para alta disponibilidadeNo cenário de caso a seguir, você vai aplicar o que aprendeu neste capítulo. As res-postas dessas questões podem ser encontradas na seçáo "Respostas", no final destelivro.

Histórico

Visão geralda empreso

A Margie's Travel oferece serviços de viagem em um único escritório localizado em SanDiego. Os clientes podem se encontrar com um agenfe no escritório de San Diego oufazer preparativos de viagem anavês do site da empresa.

Page 587: Livro_SQL

586 Kit de Treinamento MCTS (Exame 70-432): Micosoft SQL Server 2008

Declarações de problema

Com a inclusão de um novo catálogo de produtos, o site está com problemas de estabi-lidade. Os clientes também sáo impedidos de adquirir produtos ou serviços em váriosmomentos durante o dia, quando estão sendo feitas alterações nos dados subjacentes.

A empresa acabou de dispensar a firma de consultoria responsável pelo desenvolvimentoe gerenciamento do site e de todos os outros aplicativos da empresa, porque não conse-guiu fornecer nenhuma disponibilidade para os sistemas fundamentais para o negócio.

Mudanças planejadas

O superintendente de tecnologia (CTo) recentemente contratado foi incumbido de imple-mentar alta disponibilidade para todos os sistemas fundamentais para o negócio. O CTOacabou de contratar um DBA e um administrador de sistemas para ajudat nessa tarefa,assim como para gerenciar as operações diárias.

Ambiente de dados ex¡stenteExistem 11 bancos de dados dentro do ambiente, como mostrado naTabela 1T-1.

Tabela 17-1 Bancos de dados dentro da Margie's Travel

Orders

Customers

CreditCords

Employees

HumanResources Armazena todos os documentos de recursos humanos (RH), 300 MBassim como salários de funcionários.

Armazena todos os pedidos feitos pelos clientes.

Armazena todas as informaçöes pessoais relacionadas a umcliente.

Products

Flights

Armazena informaçöes de cartão de crédito de cliente.

Armazena informações relacionadas a todos os funcionários. 50 MB

CarRental

Excursions

Armazena os produtos que podem ser comprados no site.

Armazena os voos que foram reservados pelos clientes.

Armazena os cruzeiros que foram reservados pelos clientes.

Admin

Armazena os aluguéis de carro que foram reservados pelosclientes.

O ambiente tem um único servidor da Web, chamado WEB1, e um único servidor debanco de dados, chamado SQL1. Todos os servidores estão sendo executados no Win-dows Server 2003 e SQL1 está executando SQL Server 2008.

SQL1 tem um gabinete de armazenamento externo conectado a uma controladora RAID(redundant array of inexpensive disks) com uma reserva capaz de implementar RAID O,

Armazena as excursöes que foram reservadas pelos clientes. 2 GBUma excursão é definida como algo que não é voo, cruzeiro,produto ou aluguel de carro.

Um banco de dados utilitário para uso dos DBAs, queatualmente está vazio.

50 GB

15 GB

2OO MB

25 GB

2GB

]. GB

1GB

L2GB

Page 588: Livro_SQL

RAID 1 e RAID 5. Atualmente, o conjunto inteiro está configurado como um único RAID

O. O armazenamento atual estâ com apenas l0o/o da capacidade.

Uma unidade de fita estâ conecfada em \MEB 1 e em SQL1 , mas as unidades de fita nun-ca foram usadas.

Atualmente, SeLl e WEB1 estâolocalizados no cubículo adjacente ao consultor dis-pensado anteriormente. Todos os aplicativos em WEBl foram escritos com ASP ou

ColdFusion.

Ambiente proposto

O CTO reservou uma parte do orçamento para comprar mais quatro servidores confi-gurados com Windows Server 2OOS e SQL Server 2008. Todo hardware serâ capaz de

suportar cluster.

Os dados dentro dos bancos de dados exislentes Products, Customers, Orders, Flíghts,Cruíses, Excursíons e Car&ental podem ser expostos na Internet por meio de aplica-tivos em execuçáo em'v\IEB1. Todas as informações de carláo de crédito que estáo

sendo movidas para o banco de dados Customers sáo criptografadas por uma chaveassimétrica para máxima segurança. Todos os outros bancos de dados devem ficaratrâs do firewall e ser acessíveis somente para usuários autenticados no domíniocorporativo.

Uma nova SAN (Storage Area Network) está sendo implementadapaÍa aÍmazenamentode banco de dados, contendo espaço em unidade suficiente para todos os bancos de

dados. Cada um dos 20 números de unidade lógica (LUNs) usados na SAN está configu-rado em uma configunçáo de faixa de espelhos, com quatro discos em cada conjuntode espelho.

Para agilizar as operações, a Margie's Travel está considerando a consolidaçáo de seus

bancos de dados, como mostrado naTabela 77-2.

TabelaLT-2 Consolidação de banco de dados proposta dentro da Margie's Travel

Capítulo 17 r Replicação 587

Bookings

Customers

Requisitos empresariaisEstá em vigor uma solução de curto prazo que permite ao sistema ser completamenterecuperado de qualquer paralisação dentro de dois dias úteis, com uma perda de dadosmâximade uma hora. No caso de um desastre maior, a empresa pode sobreviver à perda

de até dois dias de dados.

Uma janela de manutençáo entre meia-noite e 08h00min de domingo está disponívelpara se lazer quaisquer alterações.

Uma solução de prazo mais longo precisa ser criada para proteger a empresa de falhasde hardware, com uma paralisaçáo máxima exigida de menos de um minuto.

Orders, Flig hts, Cruises, Excu rsions, CqrRenta I

Cu stomers, Cred itCs rds

55 GB

1"5 GB

Page 589: Livro_SQL

s88 Kit de Treinamento MCTS (Exame 70-432): Microsoft SeL Server 200g

Requisitos técnicosOs bancos de dados Orders e Customers precisam seÍ armazenados na mesma instânciado SQL Server e ter failover em conjunto, pois os dois bancos de dados estáo vinculados.

os dados de cartão de crédito precisam ser seguros em cada formato, incluindo os ba-ckups.

o banco de dados Products precisa ser colocado no modelo de recuperação Registro emmassa a cada noite, para facilitar o carregamento incremental de folhas de dados deproduto e artigos de pesquisa.

Todos os bancos de dados relacionados ao RH devem ter segurança muito forte, comacesso somente para o diretor de RH. Todos os dados de HR devem ser criptografadosdentro do banco de dados, assim como em qualquer outraparteda rede.

o departamento de marketing precisa construir relatórios com todos os dados de clientee pedido, junto com os produtos ou serviços associados que foram reservados, paradesenvolver novas campanhas de marketing e ofertas de produto. Toda análise exigedados quase em tempo real. As operações de produção de relatório náo podem ser afetã-das por atualizações do ambiente de produçáo.

Todos os bancos de dados sáo obrigados a manter gg,g2yo de disponibilidade duranteum ano inteiro. Um mínimo de intervenção dos administradores é necessário para serecuperar de uma paralisaçáo. Os clientes que estejam usando o site não podem saberquando ocorre um failover.

l. PaJä aproveitar descontos na aquisiçáo, a Margie's Travel está começan do a arma-zenar quantidades maiores dos 25 principais produtos de seu portfólio. O armazémmantém uma cópia do banco de dados Products. Para manter o status do estoqueatualizado no site da web, a quantidade em estoque diminui à medida que os pedi-dos são feitos e aumenta quando os artigos chegam ao armazém. euaf é a mèhortecnologia pan gerenciar as quantidades de produto?

A. Replicaçáo transacional corn a opção de assinante s de atualização enfileirada

B. Log shipping

C. Replicação por merge

D. Espelhamento de banco de dados

2. obanco de dados Products precisa se tornar geograficamente tolerante à falha como mínimo trabalho. No caso de uma paralisaçáo do banco de d,ad,os prod.ucts princi-pal, o failover deve ocorrer dentro de três a cinco minutos. Para garantft a coerênciade aplicativo, os aplicativos que mantêm o banco de dad,os prod.ucts iniciam os fai-lovers, emvez do SQL Server. o banco de dados tolerante à falha não deve estar dis-ponível para quaisquer outras operações. eual é a melhor tecnologia a implantar?

A. Log shipping

B. Replicaçáo transacional

Page 590: Livro_SQL

C. Replicação transacional com a opção de assinantes de atualização enfileirada

D. Replicação por merge

ã. Como os bancos de dados Booktngs e Customers sáo táo fundamentais para as

operações, que configuraçáo de RAID forneceria o equilÍbrio mais perfeito entredesempenho e confiabilidade?

A. R,\ID 5

B. RAID O

C. RAID 1

D. RAID 1 + 0 (espelho de faixas)

4. Qual é a melhor soluçáo paÍa o banco de dados de produçáo de relatórios que o

marketing usarâ?

A. Replicaçâo por merge

B. Replicaçáo transacional

C. Replicação de snapshot

D. Replicação transacional com a opçáo de assinantes de atualização imediata

5. Recentemente, os pedidos aumentaram substancialmente por causa de novascampanhas de marketing e posicionamentos do mecanismo de pesquisa. Agora,a demanda de leitura e gravaçã,o agregada em um único servidor ultrapassa a ca-pacidade existente. Que tecnologia permitirá à Margie's Travel expandir tanto acapacidade de leitura como de gravação, ao passo que também mantém uma cópiacoerente dos dados de pedido? (A solução precisa permitir expansáo futura.)

A. Replicação transacional em uma configuraçáo ponto a ponto

B. Replicação transacional em uma configuraçáo bidirecional

C. Replicaçáo transacional

D. Replicação transacional com a opção de assinantes de atualizaçáo enfileirada

Capítulo 17 r Replicação s89

Práticas suger¡dasPara dominar os objetivos do exame apresentados neste capítulo, complete as tarefasa seguir.

Repl icação transacionalNesta tarefa, você vai ptaticar vâtias maneiras de configurar replicação transacional.

I Exercício 1 Configure o banco de dados AdventureWorks para replicar todos os

dados por meio de replicação transacional. Faça alterações no publicador e verifi-que os resultados no assinante.

Page 591: Livro_SQL

Kit de Treinamento MCTS (Exame70-432): Microsoft SQL Server 2008

I Exercício 2 Configure o banco de dadosAdventureworks parareplicar por meio dereplicaçáo transacional. Aplique um filtro de linha em uma ou mais tabelas. Façaalterações no publicador e verifique os resultados no assinante.

r Exercício 3 Configure o banco de dadosAdventureWorks para replicar por meio dereplicação transacional. Aplique um filtro de coluna em uma ou mais tabelas. Façaalterações no publicador e verifique os resultados no assinante.

r Exercício 4 Configure o banco de dados AdventureWorks para replicar todos osdados por meio de replicaçáo transacional com a opção de assinantes de atualiza-ção enfileirada. Faça alterações no publicador e verifique os resultados no assinan-te. Faça alterações no assinante e verifique os resultados no publicador. Introduzaum conflito de dados e verifique os resultados.

r Exercício 5 Configure o banco de dados AdventureWorks para replicar todos osdados por meio de replicação transacional com a opção de assinantes de atualiza-ção imediata. Faça alteraçóes no publicador e verifique os resultados no assinante.Faça alterações no assinante e verifique os resultados no publicador. Coloque o pu-blicador offline, faça alterações de dados no assinante e verifique os resultados.

r Exercício 6 Configure o banco de dados AdventureWorks para replicar todos osdados por meio de replicação transacional em uma arquitetura bidirecional. Façaalterações no publicador e no assinante e, em seguida, verifique os resultados. In-troduza um conflito de dados e observe os resultados.

I Exercício 7 Confïgure o banco de dados Adventureworks panreplicar todos osdados por meio de replicação transacional em uma arquitetura ponto a ponto. Façaalterações em cada banco de dados participante da replicação e observe os resulta-dos.Introduzaûmconflito de dados e observe os resultados.

I Exercício 8 Configure o banco de dados AdventureWorks para replicar por meiode replicação transacional com a opção de assinantes de atualização enfileirada,aplicando um fïltro de linha em um ou mais artigos. Faça alterações no publicadorque não correspondam ao filtro de linha e observe os resultados. Faça alterações noassinante que náo correspondam ao filtro de linha e observe os resultados.

r Exercício 9 Configure o banco de dados AdventureWork:s para replicar por meio dereplicação transacional com a opção de assinantes de atualização imediata, apli-cando um filtro de linha em um ou mais artigos. Faça alterações no publicador quenáo correspondam ao filtro de linha e observe os resultados. Faça alterações noassinante que náo correspondam ao filtro de linha e observe os resultados.

r Exercício 10 Investigue os resultados da configuraçáo de procediment os armaze-nados (stored procedures), views e funções como artigos dentro de uma publicaçãotransacional.

Page 592: Livro_SQL

Replicação por merge

Nesta tarefa, você vai praticat vâñas maneiras de configurar replicação por merge.

I Exercício 1 Configure o banco de dadosAdventureWorþ.s para replicar por meio de

replicação por merge. Faça alterações no publicador e observe os resultados. Faça

alterações no assinante e observe os resultados.lnûoduza um conflito de dados e

observe os resultados.

I Exercício 2 Configure o banco de dados AdventureVl/orks para replicar por meio

de replicação por merge usando um filtro de linha estático. Faça alterações no

publicador que náo correspondam ao filtro de linha e observe os resultados. Faça

alterações no assinante que não correspondam ao filtro de linha e observe os re-

sultados.

r Exercício 3 Confïgure o banco de dados AdventureWorks para replicar por meio de

replicaçáo por merge usando um filtro dinâmico. Faça alterações no publicador que

não correspondam ao filtro dinâmico e observe os resultados. Faça alterações no

assinante que não correspondam ao filtro dinâmico e observe os resultados.

I Exercício 4 Configure o banco de dadosAdventureWorþ,s para replicar por meio de

replicação por merge usando um filtro de junção. Faça alterações no publicador que

náo correspondam ao filtro de junção e observe os resultados. Faça alterações no

assinante que náo correspondam ao filtro de junção e observe os resultados.

Capítulo 17 r Replicação

Faça um testeOs testes do CD deste livro (em inglês) oferecem muitas opções. Você pode fazet umteste sobre apenas um objetivo do exame ou sobre todo o conteúdo do exame de certi-

ficaçâo 70-432. É possível configurar o teste para que ele simule a experiência de fazer

um exame de certifrcaçãto ou configurâ-lo no modo de estudo (study mode) para ver as

respostas corretas e explicações depois de cada questáo.

591

MATSTNFORMAçÖES Testes

Para mais detalhes sobre todas as opçöes de testes disponíveis, consulte a seção "Como utilizaros testes" na lntrodução deste livro.

Page 593: Livro_SQL
Page 594: Livro_SQL

AAjuste de coleta Grupo de itens de coletacombinados e gerenciados por um coletor dedados.

Alcançável Objeto dentro de uma instância oude um banco de dados em que permissões podemser concedidas.

A|erta Objeto que pode ser criadopararespon-der a uma altenção no estado do sistema.

Algoritmo de hashing A,lgoritmo unidire-cional que criptografa dados, mas não permitedescriptografia.

Alinhamento de índice fndice que utiliza amesma função de partição que a tabela na qualé, criado.

Arquivo de carga de trabalho Arquivo outabela que contém instruções SQL para o DTAanalisar.

Arquivo de sinônimos Arquivo XML criadopara um idioma específico para uso com umíndice full text. Os arquivos de sinônimos per-mitem que você retorne sinônimos de termosde pesquisa, como quando procura metal (eminglês) e o índice também retorna gold, sílver,copper, aluminum, etc.

Artigo A unidade mais granular de uma pu-blicação. Os artigos podem ser definidos paraÍa-belas, views, procedimento s armazenados (storeprocedures) e funções.

Assinante Banco de dados designado para re-ceber alterações de um publicador. Se desejado,pode ser configurado para permitir que as altera-ções sejam enviadas para um publicador.

Assinatura Assinatura digital que é, aplicadaem um módulo de código, permitindo uma esca-lada de permissões somente quando um móduloestá sendo executado.

Assinatura Contrato entre publicador e assi-nante que define a publicação que será enviadapara um assinante.

Auditoria de servidor Objeto de auditoriaque define o local e propriedades de registropara as especificações de auditoria que estejamdefïnidas.

BBackup completo Backup que captura todasas páginas que contêm dados dentro de um ban-co de dados.

Backup de final A primeira etapa de toda ope-ração de restauração. O backup de final executaum backup de log de transação final para salvartodas as transações restanïes no log, antes deiniciar uma sequência de restauração.

Backup de Iog de transação Backup incre-mental de um banco de dados. Contém todas astransações que foram efetivadas desde o últimobackup de log de transaçáo.

Backup diferencial Backup que contém todasas extensões dentro de um banco de dados quemudaram desde o último backup completo.

Backup parcial operação que faz o backupapenas dos grupos de arquivo que podem sergravados.

Banco de dados de quórum Contém todasas informações de configuração operacionais docluster. Também chamado de quórum.Banco de dados de reserva Consulte Bancode dados secundário.

Banco de dados primário Banco de dadosque está recuperado e aceitando transações den-tro de uma sessão de log shipping.

Banco de dados secundário Banco de da-dos que não está recuperado (NO RECOVERY ou

Page 595: Livro_SQL

594 Glossário

STANDB\ e rcm backups de log de transação doprimário continuamente restaurados nele.

B-tree Estrutura linear e simétrica usada para

construir um índice. Uma B-tree fornece umaestrutura compacta que permite pesquisar volu-mes de dados muito grandes com um pequeno

número de operações de leitura.

Bulk Copy Program (BCP) Utilitário de linhade comando usado para importar dados de umarquivo para uma tabela, assim como para ex-

portar dados para um arquivo.

BULK INSERT Comando T-SQL que permiteimportar dados de um arquivo para uma tabelaou view.

cCatáfogo full text Contêiner de atmazena-mento para índices full text.

Categoria de diretiva Contêiner no qual umou mais planos podem ser associados.

Certificado Chave que obedece ao padrão X.509,usada para criptografar dados em uma coluna, as-

sim como chave de criptografia de banco de dados

para criptografia transparente de dados. Pode-se

fazerbackup e resfaurar os ceftificados, tornando-os mais portáveis do que uma chave assimétrica.

Chave assimétrica Chave que obedece ao pa-

drão X.509 e que pode ser usada paracripÍogra-far dados dentro de uma coluna.

Chave de particionamento Coluna databelautilizada para p afüção.

Chave estrangeira Impõe integridade referen-cial entre duas tabelas.

Chave mestra de banco de dados Chave

mestra do banco de dados que forma a niz da

hierarquia de criptografia do banco de dados.

Chave mestra de serviço Chave simétrica da

instância definida pela conta de serviço e usadacomo raiz da hierarquia de criptografia dentro de

uma instância.

Chave primária Designa a coluna (ou colu-nas) dentro de uma tabela que identilica cada

linha exclusivamente. Uma chave primária nãopermite valores NULL.

Chave simétrica Algoritmo de criptografia bi-direcional que usa uma única chave para cripto-grafar e descriptografar dados.

Cluster de conjunto de nós de maioria Clus-

ter que armazena uma cópia local do banco de

dados de quórum em cada nó do cluster. Esse

tipo de cluster é suportado somente no WindowsServer 2003 e posteriores.

Cluster padrão Cluster incorporado em umúnico banco de dados de quórum atmazenadoem um conjunto de discos compartilhado.

Coluna de identidade Coluna com a proprie-dade IDENTIW, que fornece automaticamenteum valor incremental quando linhas são inseri-das na tabela.

Coluna esparsa Propriedade aplicada a umacoluna que permite valores NULL, a qual otimiza o armazeîamento pelo fal'o de náo exigirnenhum espaço para os valores NULL armaze-

nados dentro da coiuna.

Condição Critérios que você deseja verificarpara uma faceta especificada.

Conflito de dados Situaçáo criada quandoo mecanismo de replicação move alterações de

forma assíncrona e diferentes usuários Íazem al-

terações na mesma linha de dados no publicadore no assinante.

Conjunto de esquemas Um ou mais esque-

mas XML carregados como um grupo no SQL

Server. Os esquemas XML são usados para vali-dar o conteúdo de colunas XML.

Constraint de verificação Limita o inter-valo de valores possíveis permitidos em umacoluna.

Constraint exclusiva Designa a coluna (ou

colunas) cujosvalores são obrigados a serúnicosdentro da tabela. Um índice único difere ligeira-mente de uma chave ptimâria, pois as colunas

de um índice único permitem valores NULL.

Constraint padrão Fotnece um vaior parauma coluna quando o aplicativo náo especificaa coluna para uma iîsf:'lJçáo INSERT.

Corrupção de página Cenário no qual o con-

teúdo de uma página de dados é inconsistenteou foi corrompido, normalmente devido à falha

Page 596: Livro_SQL

de uma controladora RAID (Redundant Arrayof Inexpensive Disks) ou de um adaptador HBA(Host Bus Adapter).

Covering index Um índice que permite satis-fazer uma consulta usando somente as entradasdo índice.

DDatabase Mail Permite que mensagens de

correio sejam enviadas a partk de uma instânciado SQL Server.

Deadlock Situação temporâña que ocorrequando dois processos que estão tentando mo-dificar dados adquirem bloqueios conflitantes de

tal modo que não permitem um ou outro proces-

so terminar.

Decompositor de palavra Montagem especí-fica do idioma que localiza quebras de palavrapara que palavras individuais possam ser sinali-zadas pelo mecanismo de indexação full text.

Destino de coleta Instância, banco de da-dos ou objeto em que um ajuste de coleta é exe-cutado.

Distribuidor Instância do SQL Server quecontém o banco de dados de distribuiçáo. AIémdisso, o local onde ocorre a maior parte da so-brecarga de processamento em uma arquiteturade replicaçáo.

Distribution Agent Processo responsável poraplicar snapshots parareplicaçáo de snapshot e

transacional, assim como por mover alteraçõesincrementais para os assinantes participantes de

uma replicação transacional.

D¡mamic Management Function (DMF) Fun-

ção que acompanha o SgL Server e fornece infor-mações de confïguraçáo, objeto ou diagnóstico.

Dynamic Management View (DMV) Viewque acompanha o SQL Server e fornece informa-

ções de configuração, objeto ou diagnóstico.

E

Encadeamento de log de transação A se-

quência ininierrupta de backups de log de tran-sação extraída após um backup completo.

Encadeamento de log de transação Con-junto contínuo de backups de log de transaçãoque pode ser aplicado em um backup completo e

não fornece quaisquer lacunas na sequência delog de transaçá0.

Endpoint Mecanismo de conexão usado porqualquer processo que precise acessar o meca-nismo do SQL Server para processar transações.Para o espelhamento de banco de dados, vocêcria TCP endpoint em cada instância envolvidana sessão de espelhamento de banco de dados.

Escalada de bloqueio (lock escalation) Pro-cesso pelo qual o Lock Manager promove umbloqueio. Os bloqueios podem ser promovidos delinha para tabela ou de página para tabela.

Especificação de auditoria de banco de da-dos Definiçáo de auditoria aplicada em um es-copo de banco de dados.

Especificação de auditoria de servidor De-

finiçáo de auditoria que se aplica ao escopo deum servidor.

Espelhamento de banco de dados Tec-

nologia de alta disponibilidade do SQL Server2008, confi,gurada entre um banco de dadosprincipal e um de espelho (e um servidor de wi-Íness (testemunha) opcional), a qual mantém osincronismo exato dos dados e do esquema de

banco de dados e também oferece a opção defailover attomâtica.

Espelho Banco de dados dentro de uma ses-

são de espelhamento de banco de dados queesiá em um estado de recuperaçáo, não permitequaisquer conexões e está recebendo alteraçõesdo principal.

Esquema de partição Definição de armaze-namento mapeada em uma função de partiçãoque determina onde cada parle dos dados seráarmazenada.

Esquema Objeto dentro de um banco de dadosa que todo objeto pertence. Um objeto não podeser criado fora de um esquema.

Etapa dejob Unidade de execução individualdentro de um job.

Evento de rastreamento Ação executadadentro do SQL Server que é exposta por meioda API SQL Trace. Exemplos de eventos são: o

Glossário 595

Page 597: Livro_SQL

596 Glossário

crescimento de um arquivo, uma consulta sendoexecutada ou uma conexão com a instância.

Extração de dados Mecanismo analítico quefazparte do SSAS, o qual usa estatísticas aplica-das para fazer previsoes sobre os dados.

F

Faceta As assemblies .NET que definem o com-portamento e as propriedades disponíveis paraserem verificadas por uma condição.

Failover de espelho Processo pelo qual o bancode dados de espelho é promovido a principal e re-cuperado. Esse processo Íambêm rebaixa automa-ticamente o principai para se tornar o espelho den-tro da sessão de espelhamento de banco de dados.

FILESTREAM Propriedade que permite aoSQL Server armazenar arquivos em um diretórioespecificado no sistema operacional, enquantoainð,affata os arquivos como parte do banco dedados para propósitos de gerenciamento, ba-ckup e restauração.

Filtro de coluna Especifica os critérios de fii-tragem a serem aplicados nas colunas replicadasde uma tabela ou view. Isso permite que somenteum subconjunto de colunas seja replicado do pu-blicador para o assinante.

Filtro de junção Filtro de linha baseado emcritérios de junçáo entre dois arligos dentro deuma publicação.

Filtro dinâmico Filtro de linha que é avalia-do com base nos parâmetros passados de cadaassinante.

Filtro fufl text Montagem carcegada pelo me-canismo full text e que permite a interpretaçáode vários formatos de documento armazenadosdentro de uma coluna VARBLNARY (MAX).

Filtros de linha Critérios usados para restrin-gir o conjunto de linhas que são replicadas paraum artigo.

Função de classificação Função no banco dedados mestre que atribui um grupo de carga detrabalho a cada conexão.

Função de partição Definição de pontos defronteira usada para determinar como os dadossão divididos em uma tabela particionada.

GGeração Identificador de lote usado na repli-cação por merge para identificar lotes de altera-

ções em publicadores e assinantes.

Grupo de arquivos Definiçáo lógica paraum ou mais arquivos de dados. Um grupo dearquivos define um limite de armazeîameîtopara objetos.

Grupo de carga de trabalho Objeto usadopelo Resource Governor para associar uma cone-xão a um pool de recursos.

Grupo de clusters Contêiner que combina vá-rios recursos de cluster em uma unidade lógicade gerenciamento.

I

ldentificador de raiz de palavra Montagemcanegada pelo mecanismo de indexaçáo full texte qtte produz formas flexionais específicas doidioma para verbos dentro dos dados que estãosendo indexados.

índice clusterizado Índice que impõe umaordem de classificação nas páginas dentro doíndice. Uma tabela pode ter apenas um índiceclusterizado.

índice full text Índice especializado para dadosnão estruturados. Os índices full text permitemque dados não estruturados sejam consultadosquanto a formas de palavra, assim como com rela-

ção à proximidade dapalavra dentro dos dados.

índice não clusterizado Índice que não im-põe uma ordem de classificação nas páginas dedados dentro databela. Você pode ter até 7.000índices não clusterizados em uma tabela.

lnfusão de mosaicos Processo utilizadopara construir um índice espacial. A infusãode mosaicos conta as células em que um objetoespacial toca dentro da hierarquia de grades dequatro níveis.

lnstância de monitor Instância configuradapara rcalizar verificações de vitalidade periódi-cas em uma sessão de log shipping.

Item de coleta Consulta ou contador de de-sempenho que você deseja monitorar no Perfor-mance Data Warehouse.

Page 598: Livro_SQL

JJob de backup Job agendado no SQL ServerAgent que cria os backups de log de transaçáopara uma sessáo de log shipping.

Job de cópia Job agendado no SQL ServerAgent que copia backups de log de transação doprimário para o secundário dentro de uma ses-

são de log shipping.

Job de restauração Job agendado no SQL

Server Agent que restaura backups de log de

transação no secundário.

LLista de parada Lista de palavras que o meca-nismo full text deve ignorar quando o índice forpreenchido. A lista de parada permite filtrar termos comuns dentro de seu setor ou sua empre-sa, para que o índice náo se torne poluído compalavras que você não deseja pesquisar.

log do contador Conjunto de valores numé-ricos correspondentes a vârias propriedades dehardware e software que podem ser capturadascom o System Monitor.

Log Reader Agent Executável responsávelpor sondar o log de transação do publicador em

busca de alterações e por gravar as alterações nobanco de dados de distribuição.

Log Sequence Number (LSN) Chave primá-ria dentro do log de transaçáo. O LSN começa em0, quando o banco de dados é criado, é sempreincrementado, nunca se repete e nunca pode serredefinido com um valor anterior.

MMarca d'água de replicação O último LSNque foi lido pelo Log Reader Agenl

Merge Agent Executável responsável por em-pacotar as alterações para serem trocadas entreo publicador e o assinante, assim como por de-tectar e solucionar quaisquer conflitos.

Modelo de recuperação Opção de banco dedados que controla os tipos de backups que po-dem ser feitos, junto com as opções de restaura-

ção possíveis.

Modo de operação Configuração que gover-na como uma sessão de espelhamento de bancode dados sincroniza transações e quais opções

de failover estáo disponíveis. Você pode escolherum de três modos de operação: Alta Disponibili-dade, Alto Desempenho ou Alta Segurança.

Modo de operação Alta DisponibilidadeModo de operaçáo de espelhamento de banco de

dados que exige um principal, um espelho e umawitness (tesfemunha), transfere dados de formasíncrona do principal para o espelho e permite de-

tecçáo de falhas automática e lailover automâti-ca, desde que o servidor de witness (testemunha)esteja acessível quando afalha ocorrer.

Modo de operação Alta Segurança Modode operação de espelhamento de banco de dadosque exige âpenas um principal e um espelho,transfere dados de forma síncrona do principalpara o espelho e só permite failover manual.

Modo de operação Alto Desempenho Modode operação de espelhamento de banco de dadosque exige apenas um principal e um espelho,transfere dados de forma assíncrona do principalpara o espelho e só permite failover manual.

NNível de isolamento Comportamento de blo-queio defïnido pelo ANSI (American National Stan-dards Institute) que o SQL Sewer usa para deter-

minar como o Lock Manager deve se comportar.

Nó de cluster Hardware capaz de executar umcluster do Windows. Pode ser um servidor fisicolistado na seção de cluster do Windows Catalog ouuma partição de máquina dentro de um hardwareda empresa (por exemplo, Unisys ES7000).

Nome de cluster Nome do cluster que podeser determinado pelo DNS.

oObjetivo de diretiva Instância, banco de da-dos, esquema ou objeto que você deseja verificarcom uma diretiva.

Operador Nome alternativo para uma pessoa,

grupo ou dispositivo para o qual você deseja en-

viar uma notificaçáo.

Glossário 597

Page 599: Livro_SQL

598 Glossário

Ownership chains Lista de proprietários den-tro de um encadeamento de execuçáo de módulo.

PPágina corrompida Pâgina que se torna in-consistente devido a uma falha do subsistema de

disco enquanto estava sendo gravada.

Parceiro de banco de dados Refere-se a ummembro de um par de bancos de dados principale de espelho participando de uma sessáo de es-pelhamento de banco de dados.

Pasta de snapshots Diretório usado para ar-mazeîar todos os dados gerados pelo processode snapshot.

Perfil de agente Conjunto de opções de confi-garaçáo aplicadas a um agente de replicação.

Perfil principal Conjunto de uma ou maisconta de correio utilizado para enviar mensa-gens usando o Database Mail.

Personificação (ìmpersonation) O ato de as-

sumir as credenciais de segurança de outra ins-tância ou banco de dados principal. Os logins/usuários de banco de dados mapeados em umcertificado ou uma chave assimétrica não podemser personificados.

Pool de recursos Objeto dentro de uma con-figuração do Resource Governor que define osrecursos de CPU e memória que podem ser aloca-dos por um grupo de carga de trabalho.

Principal

1. Objeto que pode possuir outros objetos den-tro de uma instância. O objeto do SQL Serverque define um caminho de acesso de segu-rança para um usuário.

2. Banco de dados dentro de uma sessáo de es-

pelhamento de banco de dados que está re-

cuperado, online e permite o processamentode transações.

Provedor de dados (data provider) Biblio-tecas de conexão usadas pelo coletor de dadospara conectar-se com os destinos de coleta.

Publicação Unidade defroca entre publicadore assinante que contém um ou mais aftigos.

Publicador O mestre designado dentro de umaarquitetura de repiicaçáo. Considera-se que o pu-blicador contém a cópia mestra dos dados.

aQueue Reader Agent Executável responsávelpor descarregar no publicador as alterações fei-tas em um assinante e solucionar quaisquer con-flitos. Usado somente com a opção de assinantede atualização e nfi lei rada.

RRecurso de cluster Recurso de hardware,sofrware ou rede que pode ser configurado e ge-

renciado dentro de um cluster.

Redirecionamento transparente de clientesProcesso que descreve a funcionalidade incorpora-da na nova biblioteca de conexão MDAC que acom-panha o Visual Studio 2005 e permite que as cone-xões do principal e do espelho sejam colocadas emcache no objeto de conexáo. A falha do principalfaz com que esse código redirecione uma conexãode cliente para o espelho sem intervenção do de-

senvolvedor ou de codificação personalizada.

Reinicialização Processo por meio do qual umsnapshot ércgenerado e reaplicado em um assi-nante; ele apaga todos os dados no assinante e

volta a sincronizá-lo com o publicador.

Replicação de snapshot Método de replica-

ção que envia, do publicador para o assinante,uma cópia completa dos dados definidos dentrode uma publicação.

Replicação por merge Método de replicaçãobaseado no controle de alterações em um con-junto de tabelas de metadados internas ao publi-cador e ao assinante. Projetado principalmentepara aplicativos móveis, desconectados, que tro,cam alterações nas duas direções.

Replicação transacional Método de replica-

ção usado para enviar dados em uma só direção,de um publicador para um assinante. Esse méto-do propaga as alterações incrementais aplicadasno publicador.

Republicador Assinante que também é confi-gurado como publicador.

Page 600: Livro_SQL

Restauração online Restauração de grupo de

arquivos realizada no SQL Server 2008 Enterpri-se, que ocorre enquanto o restante do banco de

dados permanece online e acessível.

Restauração parcial Restauração de grupo de

arquivos que afeta somente parte de um bancode dados.

Reversão de banco de dados A restauraçáode um banco de dados a pafür de um snapshotde banco de dados.

Role de banco de dados fixo Role dentrode um banco de dados incluído com o SOL Ser-

ver no qual você não pode altem a definição de

seguranç4.

Role de espelhamento de Ëanco de da-dos Define o estado operacional de cadaparti-cipante de uma sessáo de espelhamento de bancode dados. Existem três roles possíveis: principal,mirror (espelho) e witness (testemunha).

Role de servidor fixo Role em nível de ins-tância incluído com o SOL Server no qual vocênão pode alterur a definiçáo de segurança.

sSalgar Adicionar um valor em dados antes de

aplicar um algoritmo de hashing, usado comoum meio de confundir os dados e impedir umataque de força bruta.

Sequência de collation Combinação do con-junto de caracteres suportado e as configura-ções para manipulação de maiúsculas, minús-culas e acentos.

Servidor de reserva Consulte Servidor se-

cundário.

Servidor de witness (testemunha) O árbitrodentro do modo de operaçáo Alta Disponibilidade,também conhecido comowítness (testemunha). O

objetivo da witness (testemunha) é garantir que o

banco de dados náo possa ser servido em mais de

uma instância ao mesmo tempo.

Servidor primário Servidor com a instânciade SQL Server que contém o banco de dadosprimário.

Servidor secundário Servidor com a instân-cia do SQL Server que contém o banco de dadossecundário.

Sessão de espelhamento de banco de da-dos Um banco de dados principal, um bancode dados de espelho e um servidor de witness(testemunha) opcional, configurados para tÍocardados usando um dos três modos de operaçãodisponíveis.

Sessão de log shipping Combinação de umbanco de dados primário e um banco de dadossecundário por meio da qual um encadeamentocontínuo de backups de log de transação é ex-traído do banco de dados primário e restauradono banco de dados secundário.

Sinal investigador Transação especializada,utilizada para registrar a latência entre cadacomponente da replicaçáo transacional.

Snapshot Agent Executável responsável porgerar um snapshot.

Solucionador de conflito códþ piedefinidoempregado na replicação por merge ou na repli-cação transacional com a opçáo de assinantes de

atualizaçáo enfi leirada, p ar a gar anfir q ue dado s

coerentes sejam mantidos por toda a arquiteturade replicaçáo, caso sejam aplicadas alterações namesma linha de dados em vários locais dentrode um ciclo da replicaçáo.

SQL Trace API de evento que o SQL Server ex-

põe para permitir a captura de informações sobre

o estado operacional de uma instância.

TTCP endpoint Transporte de endpoint quepermite comunicação de Transact-SQl, espelha-mento de banco de dados e Service Broker dentrodo SQL Server.

Topologia de replicação Diagrama empresa-rial que mostra como os dados fluem em umaar quiteíur a de repl ica ção.

Trigger de DDL Código executado quandouma instrução DDL, como CREATE, DROP ouAL-TER, é executada.

Glossário s99

Page 601: Livro_SQL

600 Glossário

UUsuário sem login Usuário de banco de da-dos que náo esiá mapeado em um login.

VValidação Processo usado para determinar seo publicador e o assinante estão sincronizados.

Page 602: Livro_SQL

ßespostag_

Capítulo 1: Respostas da revisão de lição

Lição 1

1. Respostas corretas: C e D

A. Incorreta: O SQL Server 2008 nã,o é suportado no Windows 2000.

B. Incorreta: O SQL Server 2008 é suportado no Windows Server 2003 Enterpri-se, mas você precisa ter a versão SP2 ou posterior instalada.

c. coÍreta O SQL Server 2008 Enterprise é suportado no Windows Sewer 2003Enterprise SP2 e posteriores ou no Windows Server 2008 Enterprise.

D. Correta: O SQL Server 2008 ediçáo Enterprise é suportado no Windows Server2003 Erúerprise SP2 e posteriores ou no Windows Server 2008 Enterprise.

2. Resposta correta: B

A. Incorreta: O SQL Server 2008 Express é suportado no Windows XP Home Edi-tion SP2.

B. Correta: O SQL Server 2008 Express não é suportado no Windows Server 2008Server Code.

C. Incorreta: O SQL Server 2008 Express é suportado no Windows Server 2003Enterprise SP2.

D. Incorreta: O SQL Server 2008 Express é suportado no Windows XP TabletEdition SP2, mas náo ê o melhor sistema operacional a ser usado.

Lição 2

1. Respostas corretas: B e C

A. Incorreta: Embora o Express provavelmente pudesse manipular a catga de

usuário da Margie's Travel, ele não ê, capaz de atuar como publicadot pansincronizarvánias cópias de um banco de dados de reserva de viagens.

B. Correta: O Standard pode manipular a carga de usuário necessária e suportaos recursos de replicação necessários para sincronizarbancos de dados.

C. Correta: O Enterprise pode ser dimensionado para manipular qualquer carga,assim como fornecer qualquer capacidade necessária para a Margie's Travel.

D. Incorreta: O Compacl náo é projetado para ser usado como mecanismo de

armazenamenlo para aplicativos baseados na Web.

q.4:=2::*=::"-"*-"*

Page 603: Livro_SQL

602 Respostas

A. Incorreta: Somente o SQL Server 2008 Enterprise suporta toda a analíticaavançada necessária, como OLAP e exploraçáo de dados.

B. Incorreta: Somente o SQL Server 2008 Enterprise suporta toda a analîticaavançada necessária, como OLAP e exploração de dados.

C. Incorreta: Somente o SQL Server 2008 Enterprise suporta toda a analíticaavançada necessária, como OLAP e exploração de dados.

D. €orreta: Somente o SQL Server 2008 Enterprise suporta toda a analítica avan-

çada necessária, como OLAP e exploração de dados.

tição 3

1. Resposta correta: D

2. Resposta correta: C

A. Incorreta: Embora o applet Windows Service Control possa ser usado para al-terar senhas de conta de serviço, você não deve usar esse utilitário. Somente oSQL Server Configuration Manager tem o código para descriptografar e cripto-grafat corcelamente a chave mestra de serviço usada pelos serviços SgL Server,quando aconta de serviço ou a senha é alterada.

B. Incorreta: O SQL Server Management Studio não pode ser usado para alterarsenhas de conta de serviço.

C. Correta: Somente o SQL Server Configuration Manager tem o código para des-criptografat e criptografar corretamente a chave mestra de serviço usada pelosserviços SQL Server, quando a conta de serviço ou a senha é, aTterada.

D. Incorreta: O SQL Server Surface Area Confrguration Mana geÍ eÍaum utilitárioque existia no SQL Server 2005 e foi eliminado no SQL Server 2008 para se

lazer as alterações de configuração diretamente, usando o procedimento arma-zenado (stored procedure) de sistema sp_corgftgure.

Lição 4

1. Respostas corretas: B e C

A. Incorreta: Notification Services é um recurso que estava disponível no SQLServer 2005 e no SQL Server 2008 não está mais.

B. Correta: O Database Mail pode ser usado para enviar mensagens para osclientes.

C. Correta: Pode ser criado um aplicativo em Visual Studio .NET para usar asbibliotecas de correio disponíveis dentro do .NET Framework.

D. Incorreta: Activity Monitor é um recurso do SSMS que exibe atividade de con-sulta no servidor; ele não pode ser usado para enviar mensagens.

2. Resposta correta: D

Page 604: Livro_SQL

2. R€spostas corretas: C e D

A. Incorreta: Um perfil público pode ser acessado por qualquer um que tenha au-toridade para enviar correspondência, o que viola os requisitos de segurança.

B. Incorreta: Embora a configuraçáo de um perfil de correio como privado res-

lriîja o acesso, o perfil náo pode ser usado a não ser que um usuário receba

acesso a ele.

C. Correta: Você precisa configurar o perfil de correio como privado e tambémconceder aces so a ele p ara usuário s auÍorizados.

D. Correta: Designar um perfll de correio como padráo permite que usuários au-forizados enviem correspondência usando esse perfil, sem a necessidade de

especifi cá-lo explicitamente.

Capítulo 1: Resposta do cenário de caso

Cenário de caso: Definindo uma ¡nfraestrutura de SQL Server

1. Como os representantes de vendas precisam estar desconectados e sincronizar da-dos, você poderia instalar a ediçáo Express ou Compact do SQL Server 2008. Con-

tudo, os aplicativos instalados nos laptops dos representantes de vendas exigemsuporte para procedimento armazenado (stored procedure). A Express é a únicaedição que minimizará o custo, ao passo que também suporta replicação e procedi-mentos armazenados (stored procedures).

2. O SQL Server 2008 Enterprise precisa ser instalado no servidor de banco de dadoscorporativo. O Enterprise pode ser dimensionado para manipular qualquer volumede atividade, enquanto também fornece serviços analíticos avançados.

3. Você precisa instalar pelo menos SSAS e SSRS. O SSAS manipula os aplicativos ana-líticos necessários para análise de tendência e o SSRS fornece a infraestrutura de

produçáo de relatórios necessária para todos os relatórios operacionais.

4. Yocê, precisa instalar o Windows 200ã Server Enterprise SP2 e posteriores ou o WindowsServer 2008 Enterprise e posteriores para suportar o SQL Server 2008 Enterprise.

Respostas

Capítulo 2: Respostas da rev¡são de lição

Lição 1

1. Resposta correta: C

A. Incorreta: os membros do role db owner ainda podem alterar dados no bancode dados.

B. Incorreta: Os membros do role db owner ainda podem alterar dados no bancode dados.

Page 605: Livro_SQL

604 Respostas

C. Cortetæ A não ser que o banco de dados esteja no modo READ_ONLY os mem-bros do role db_owner ainda podem aherar dados no banco de dados.

D. Incorreta: Os membros do role db_owner ainda podem alterar dados no bancode dados.

Lição 2

1. Resposta correta: D

A. Incorreta: A opçáo AUTO_SHRINK não garante que o banco de dados possaser recuperado em qualquer ponto no tempo.

B. Incorreta. /\parametrização forçada nâo garante que o banco de dados possaser recuperado em qualquer ponto no tempo.

C. Incorreta: Embora o modelo de recuperação Registro em massa petmifa o mâ-ximo desempenho e ainda seja possível criar backups de log de transação, vocênão pode recuperar um banco de dados em um ponto no tempo durante o qualuma operação minimamente registrada está sendo executada.

D. Correta: O modelo de recuperaçáo Completo garante que você sempre possarecuperar o banco de dados em qualquer ponto no tempo.

tição 31. Respostas corretas: A e C

A. COTTCIA: UM COMANd O DBCC CHECKDB CXCCUTA DBCC CHECKTABLE, DBCCCHECKALLOC e DBCC CHE CIICATALOG,

B. Incorreta: DBCC CHECKIDENT é usado paraverifr,car, corrigir ou gerar nova-mente um valor de identidade.

C. Cortela: Um comando DBCC CHECKDB executa DBCC CHECKT/4.BLE, DBCCCHE CKALLOC e DBCC CHECKCATALOG.

D. Incorretaz DBCC FREEPROCCACHE limpa o conteúdo da cache de consulta.

Capítulo 2: Resposta do cenár¡o de caso

Cenário de caso: Configurando bancos dedados para a Coho Vineyard

1. Paramaximizar o desempenho no banco de dados Order, você deve usar o modelode recuperaçáo Registro em massa durante a importação das transações EDI. Comovocê não pode recuperar um banco de dados em um ponto no tempo durante umatransaçáo minimamente registrada, deve deixálo no modelo de recuperaçáo Regis-tro em massa somente pelo período de tempo mínimo necessário.

2. Para garantir uma perda de dados máxima de 5 minutos, você precisa criar backupsde log de transação para todos os bancos de dados. os backups de 1og de transação

Page 606: Livro_SQL

podem ser criados apenas para bancos de dados no modelo de recuperação Com-pleto ou Registro em massa. Com exceção das operações de carregamento no bancode dados Order, todos os bancos de dados devem estar o tempo todo no modelo derecuperação Completo.

Capítulo 3: Respostas da rev¡são de lição

lição 1

A. Incorreta: Você pode aplicar compactação de pâgina em uma tabela que te-nha o tipo de dados UARCHAR(MAX); no entanto, os dados dentro da colunaVARCHAR(M,4X) não são compactados.

B. Correta: Você náo pode usar compactaçáo de linha ou de página com umatabela que tenha uma coluna esparsa.

C. Correta: Um conjunto de colunas é construído para um grupo de colunas es-parsas; portanto, como a compactaçáo de linha e depâgina é incompatível comcolunas esparsas, também é incompatível com um conjunto de colunas.

D. Incorreta: Você pode aplicar compactação de linha ou de página em uma tabe-la que tenha umacoTunaFILESTREAM, mas os dados na coIUnaFILESTREAMnáo seráo compactados.

Lição 2

1. Respostas corretas: A e C

A. Correta: ROWGUIDCOL, IDENTITY e FILESTRE 4M não podem ser usados comcolunas SPARSE. Como a opçáo NOT FOR REPLICATION é aplicada em umacoluna de identidade, você não pode ter uma coluna que seja SPARSE e quetambém tenha a opçâo NOT FOR REPLICAU)N. Além disso, uma coluna devepermitir valores NULL para ser designada como esparsa.

B. Incorreta: As colunas esparsas devem permitir valores NULL.

C. Corceta: ROWGUIDCOL, IDENITW e FILESTREAM não podem ser usados comcolunas SPARSE. Como a opção NOT FOR REPLICAffiON é, aplicada em umacoluna de identidade, você não pode ter uma coluna que se¡'a SPARSE e quetambém tenha a opçâo NOT FOR REPLICAUON. Além disso, uma coluna devepermitir valores NULL para ser designada como esparsa.

D. Incorreta: Uma coluna esparsa pode ter uma sequência de collation especifi-cada.

1. Respostas corretas: B e C

Respostas

Page 607: Livro_SQL

606 Respostas

Capítulo 3: Resposta do cenár¡o de caso

Cenário de caso: Executando tarefas de gerenciamento de dados

1. os manuais de produto devem ser armazenados em uma tabela com uma colunaVARBINARY(MAX) designadapara FILESTREAM. Além disso, você também deve in-cluir uma coluna para designar o tipo de arquivo armazenado na linha para que osaplicativos possam interpretar os dados corretamente. A tabela de manuais de produ-to deve ter uma chave estrangeira para a tabela de produtos para garantir que vocêesteja carregando apenas os manuais de produtos que existem no banco de dados.

2. Yocê poderia especificar um tipo de dadosXML para a coluna de descriçáo de pro-duto e entáo criar um documento XML pan cada uma das traduções de descriçãoque seja carcegada na coluna XML. Contudo, você teria que analisar o documentoXML para localizar a descriçáo no idioma que desejasse. Embora acarrcte um poucode manutençáo, a maneira mais simples de armazenar descrições de produto emvários idiomas é adicionar uma coluna separada para cada idioma e usar a proprie-dade COLLATE pan definir a sequência de collation apropriada pan a coluna.

3. Você poderia adicionar uma coluna SalesRep nalabela Customers com uma chaveestrangeira para a tabela de representantes de vendas, para impor a integridade.Você também poderia criar uma nova tabela que incluísse CustomerlD e SalesReplD,adicionar uma chave primária nas duas colunas e, em seguida, criar chaves estran-geiras para as tabelas de clientes e de representantes de vendas.

Capítulo 4: Respostas da rev¡são de lição

Lição 1

1. Resposta corÍeta. C

A. Incorreta: Como o otimizador considera somente a primeira coluna de umíndice ao determinar o plano de consulta, a menos que a consull.a tenha retor-nado apenas ProducilD, ProductName e SKU, é muito improvável que o SQLServer use esse índice sobre a chave púmfuia na tabela.

B. Incorreta: Embora esse índice permita ao SQL Server localizar consultas pes-quisadas pot ProductName, o SQL Server precisa acessar a tabela paÍa rctor-nar o restante dos dados para o conjunto de resultados.

C. Correta: Esse índice permite que o SQL Server pesquise por ProductName e

retorne o conjunto de resultados inteiro para a consulta apartir do índice, emvez databela. Além disso, o índice é mantido pequeno, tendo apenas a colunaProductName definindo a B-tree e os níveis superiores do índice.

D. Incorreta: Embora o SQL Server pudesse usar esse índice para satisfazer as

consultas inteiramente a paftir do Índice, cada nível do índice seria construídoem uma chave de 250 kilobytes (KB), fazendo um conjunto de páginas muitomaior ser lido.

Page 608: Livro_SQL

Lição 2

1. Resposta correta: D

A. Incorreta: Como a coluna Color pode ser nula, um índice filtrado é mais efi-ciente.

B. Incorreta: Como a coluna Color pode ser nula, um índice filtrado é mais efi-ciente.

c. Incorreta: Embora o índice filtrado na coluna Color seja mais eficiente do que

um índice não filtrado, o SQL Server precisa realizar uma operação de leitura amais para recuperar as informações das colunas ProductType e Woodspecies.

D. Correta: Como a coluna Color pode ser nula, o índice mais eficiente para essaconsulta inclui somente os valores que náo eram anuláveis. Além disso, in-cluindo as colunas ProductType e Woodspecíes, a consulta poderia ser satis-feita inteiramente pelo índice.

tição 3

1. Resposta cofteta. C

A. Incorreta: Embora uma instruçáo BULK INSERZpossa carÍegar dados rapida-mente, se os índices existirem na tabela durante a operaçáo de carregamentode dados, você acarcelarâuma sobrecarga muito grandeparu as gravações nosíndices.

B. Incorret at CaÍregaÍ dados em uma tabela sem quaisquer índices e depois criaros índices após o carregamento é mais eficiente do que caÍregar os índices nolocal. Contudo, eliminar e recriar os índices exige mais trabalho do que desati-válos e reativá-los.

C. Correta: Desativando os índices antes do carregamento, você evita toda a so-brecarga necessária para mantê-los. Usando o método desativarlaíivar, vocênáo precisa manter scripts pan recriat os índices após o carregamento dosdados.

D. Incorreta: É mais eficiente carcegar os dados em tabelas que não têm índices.O Integration Services náo consegue superar a sobrecarga da manutenção deíndice durante uma operaçáo de carga.

Respostas 607

Capítulo 4: Resposta do cenário de caso

Cenário de caso: Executando tarefas de gerenciamento de dados

1. Crie um índice filtrado nafabelaCustomerord er paraas linhas que ainda não foramenviadas

2. Crie um índice espacial na tabela CustomerAddress para latitude e longitude

Page 609: Livro_SQL

608 Respostas

3.

4.

Crie índices náo cTuslerizados nas colunas customer name, city e salesperson

Crie um Índice não clusÍerizado no nome de produto dentro databela Customeror-derDetail

Capítulo 5: Respostas da rev¡são de lição

Lição 1

1. R€spostas corretas: B e D

A. Incorreta: O SQL Server 2005 atmazenada índices full text no sistema de ar-quivos. O SQL Server 2008 armazena índices full text dentro de um grupo de

arquivos no banco de dados.

B. Correta: Os catálogos full text contêm índices full text e no SQL Server 2008 o

conteúdo dos índices ê, armazenado dentro do banco de dados.

C. Incorreta: A opçáo NO POPULATION permite ao SQL Server criar o índice fulltext, mas näo preenche o índice. Portanto, as pesquisas náo retornam quais-quer resultados.

D. Correta: A opçáo CHANGE_TRACKING AUTO permite ao SQL Server preenchero índice full text na criação inicial e migrar as alterações automaticamente paraos dados subjacentes no índice.

2. Respostacorretal. C

A. Incorreta: O argumenro START {FULL I INCREMENTAL I UPDATE} POPU-L,\TION realiza o preenchimento do índice full text, mas deve ser executa-do manualmente ou configurado para execução em um job do SQL ServerAgent.

B. Incorreta: O argumenro STARI {FULL I tUCnnUnUrRL J UPDATE} POPULATION

rcalizao preenchimento do índice full text, mas deve ser executado manualmenteou configurado para execução em um job do SQL Server Agent.

C. Corretæ Quando o argumento CHANGE_TRACKING é configurado comoAUTO, o SQL Server alualiza o índice full text automaticamente, quandoocorrem alterações nos dados subjacentes. No modo AUTO, nenhuma inter-venção do administrador é necessária, nem manualmente nem por meio deumjob agendado.

D. Incorrera: O argumenro START {FULL I INCREMENTAL I UPDATE} POPU-LATION rcaliza o preenchimento do índice full text, mas deve ser executa-do manualmente ou configurado para execuçáo em um job do SQL ServerAgent.

Lição 2

1. Respostas corretas: A e C

Page 610: Livro_SQL

A. Correta: CONTAINS permite pesquisas de proximidade usando apalavra-cha-

VCNEAR.

B. Incorreta¡ FREETEXT não permite pesquisas de proximidade.

C. Corcetat I)NTAINSTABLE permite pesquisas de proximidade usando a pala

wa-chaveNEAR.

D. Incorretat FREETEXTTABLE não permite pesquisas de proximidade.

2. Resposta cofreta: D

A. Incorreta: O argumento FORMSOF permite que você pesquise com base em um

dicionário de sinônimos-ou nas formas flexionais de um termo de pesquisa,

mas náo realiza pesquisas de proximidade.

B. Incorreta: O argumento FORMSOF permite que você pesquise com base em um

dicionário de sinônimos ou nas formas flexionais de um termo de pesquisa,

mas náo realiza pesquisas de proximidade.

c. Incorreta: ISAßOUT realiza pesquisas de proximidade, mas não aplica ponde-

raçâo, a náo ser que a palavra-chave WEIGHT e o valor de ponderação também

sejam flornecidos.

Corceta: ISABOUT realiza pesquisas de proximidade e também aplica pondera-

ção, caso sejam fornecidos a palavra-chave WEIGHT e o valor de ponderaçáo.

Respostas

Lição 3

1. Resposta correta: A

A. Correta: As listas de parada são criadas no SQL Server 2008 pan excluir pa-

lavras de um índice full text, assim como argumentos de pesquisa. Depois que

a lista deparada é associada a um índice full text, as consultas que usarem o

índice terão todas as palavras de panda removidas automaticamente dos ar-

gumentos de pesquisa.

B. Incorreta: Arquivos de palavra de ruído eram usados no SQL Server 2005. O

SQL Server 2OO8 usa listas de parada para excluir palavras de argumentos de

pesquisa.

c. Incorreta: Um dicionário de sinônimos permite que termos sejam substituídos,

como abreviações ou ortografias erradas comuns, mas não exclui a pesquisa de

palavras.

D. Incorreta: Embora você pudesse alterar seu aplicativo para remover argumen-

tos de pesquisa, isso exigiria mais trabalho do que criar, preencher e gerenciar

uma lista de panda.

Page 611: Livro_SQL

610 Respostas

Capítulo 5: Resposta do cenár¡o de caso

Cenário de caso: Instalando e configurando o SQL Server 20081. Você deve armazenar os manuais de produto em uma coluna VARBLNARY(MÁX)

que seja ativada pan FILESTREAM. A tabela tambêm deve conter uma coluna queindique o tipo de documento que está atmazenado dentro da linha para se poderconstruir um índice fulI text na tabela.

2. Yocê precisa criar um catéiogo full text, assim como um índice fulI text, na tabelaque contém os manuais de produto. Usando os recursos do indexador full text paraempregar filtros que interpretam formatos de documento, você não precisa fazerquaisquer alterações para indexar os documentos e tornar o conteúdo imediata-mente disponível para os usuários.

3. Como seus usuários nem sempre usarão os termos exatos definidos dentro de suadocumentação, você deve configurar listas de expansão e substituição dentro deum arquivo de dicionário de sinônimos paÍa fornecer sinônimos para os usuários,assim como para substituir ortografias erradas ou abreviações comuns. Pan ge-renciar vários idiomas para descrições de produto, você deve adicionar vma colunaseparada pan cada idioma que contenha cadatraduçáo do idioma específico. Oíndice full text deve ser criado em cada coluna traduzida, usando a especificação doidioma apropriada para maximizar a eficâcia dos decompositores de palavra, assimcomo para permitir que identificadores de raíz de palavra criem formas flexionaispara cada idioma.

Capítulo 6: Respostas da rev¡são de lição

Lição 1

1. Resposta cofletal. C

A. Incorreta: Embora o 1og shipping permita a criação de cópias adicionais dobanco de dados, a Contoso não tem nenhum hardware adicional para usar.

n. mcorreta: Embora a replicaçáo permita a criaçãode cópias adicionais do ban-co de dados, a Contoso náo tem nenhum hardware adicional para usar.

C. Corcetaz Você poderia particionar as tabelas mais usadas, permitindo assimespalhar os dados entre vários arquivos, o que melhoruria o desempenho.

D. Incorreta: Embora espelhamento de banco de dados crie uma cópia adicionaldo banco de dados, a Contoso não tem nenhum hardware adicional para usar.

Lição 2

1. Respostas corretas: A e C

A. Correta: O operador SWITCH remove os pedidos com mais de 30 dias semcausar bloqueios.

Page 612: Livro_SQL

B. Incorreta: Você poderia executar uma operaçá o DELETE , mas seriam adquiridos

bloqueios exclusivos que afetariam acapacidade dos clientes defazer pedidos.

C. Correta: O particionamento da coluna OrderDate permite que você use o ope-

rador SWITCH para remover dados com mais de 30 dias databela sem causar

bloqueios.

D. Incorreta: Você poderia executar um a operaçáo DELETE , mas seriam adquiridos

bloqueios exclusivos que afetariam acapacidade dos clientes defazer pedidos.

Lição 3

1. Resposta correta: B

A. Incorreta: A replicação transacional tem a capacidade de mover dados para as

tabelas dentro do data warehouse; no entanto, durante o processo de inserção

sáo adquiridos bloqueios que afetariam os usuários.

B. Correta: O operador SWITCH ê. projetado para mover partições de dados para

uma tab ela sem bloqueios.

c. Incorreta: O espelhamento de banco de dados exige que o banco de dados de

espelho esteja offline e não seria uma tecnologiavâiida nesse cenário.

Incorreta: os snapshots de banco de dados fornecem uma cópia somente lei-tura de ponto no tempo de um banco de dados e não refletiriam quaisquerdados novos que fossem adicionados.

Lição 4

D.

Respostas

1. R€sposta correta: D

A. Incorreta: o espelhamento de banco de dados mantém um banco de dados

secundário sincronizado, mas o espelho é inacessível. Portanto, é inadequadopara arquivamento.

B. Incorreta: A replicaçáo transacional poderia ser usada para mover os dadospara outro sistema, para caÍrcgamento no data warehouse; no entanto, você

ainda precisa excluir dados do sistema de entrada de pedidos. Isso afeta a con-

corrência e o desempenho do sistema de entrada de pedidos.

C. Incorreta: Os snapshots de banco de dados mantêm uma cópia somente leitu-ra dos dados nesse ponto no tempo e sáo inadequados para arquivamento.

D. Correta: Projetando a tabela com particionamento, você pode remover dados

de pedido do sistema de entrada de pedidos sem afetar o desempenho ou a con-

corrência. Depois de remover apafüção databela, você pode canegaÍ os dadosno data warehouse.

611

Page 613: Livro_SQL

61,2 Respostas

Capítulo 6: Respostas do cenár¡o de caso

Cenário de caso: Construindo uma infraestruturano SQL Server para a Coho Vineyard

1. Resposta correta: B

A. Incorreta: O requisito do banco de dados Customer é de que todos os dadosdevem fr,car arquivados por pelo menos seis anos. Mesmo que você pudessemigrar todos os dados de Customer parauma planilha eletrônica, esse métodoexigiria mais sobrecarga administraliva do que simplesmente fazer um backupcompleto dos dados.

B. Correta: O requisito do banco de dados Customer é de que todos os dadosdevem ficat arquivados por pelo menos seis anos. Fazer o backup mensal dobanco de dados Customer em fita permite que você satisfaça esse requisito comuma quantidade mínima de sobrecarga administrativa.

C. Incorreta: Não é necessário criar um novo banco de dados ou usar replicaçãode banco de dados para arquivar o banco de dados Customer. A maneira maissimples de satisfazer o requisito é realizar um backup completo do banco dedados Customer regularmente e guardar todos os backups por pelo menos seisanos.

D. Incorreta: Esse método não fornece uma solução de arquivamento. Além dis-so, ele não oferece uma maneira de preservar todos os dados de Customer. ,{lte-rações feitas no banco de dados Customer, por exemplo, removeriam o registrodos valores que existiam antes da alteração.

2. Resposta correta: D

A. Incorreta: Você deve usar uma operaçã o SWITCH para frocar partições entretabelas.

B. Incorreta: Você deve usar uma operação SWITCH pan trocat partições entretabelas.

C. Incorreta: Durante uma operaçáo SWITCH, somente uma partição pode conterdados. Portanto, os dados só podem ser movidos paraa Partição 2 emOrder.Archive.

D. Correta: Durante uma operação SWITCH, somente uma partiçáo pode conterdados. Portanto, os dados só podem ser movidos paraaPartiçâo 2 em Order.Archive.

5. Resposta coÍretat C

A. Incorreta: Quando você executa uma operaçã,o SWITCH, os dados não podemser movidos de um grupo de arquivos para outro. Como nesse exemplo os da-dos estáo sendo movidos por meio de uma operaçáo SWITCH daPartição 2 emOrder.Sales para a Partição 2 em Order.Archive, essas duas partições devemestarlocalizadas no mesmo grupo de arquivos.

Page 614: Livro_SQL

B. Incorreta: Quando você executa uma operação SWITCH, os dados não podemser movidos de um grupo de arquivos para outro. Como nesse exemplo os da-dos estão sendo movidos por meio de uma operuçãto SWITCH daPartiçáo 2 emorder.sales para a Partição 2 em order.Archive, essas duas partições devemesfar localizadas no mesmo grupo de arquivos.

Correta: Quando você executa uma operação SWITCH, os dados não podemser movidos de um grupo de arquivos para outro. Como nesse exemplo os da-dos estáo sendo movidos por meio de uma operaçáo SWITCH daPartição 2 emOrder.Sales para aPartiçáo 2 em Order.Archive, essas duas partições devemeslarTocaTizadas no mesmo grupo de arquivos.

Incorreta: Quando você executa uma operação SWITCH, os dados náo podemser movidos de um grupo de arquivos para outro. Como nesse exemplo os da-dos estáo sendo movidos por meio de uma operação SWITCH daPartição 2 emOrder.Sales paÍa aPartiçáo 2 em Order.Archive, essas duas partições devemestatlocalizadas no mesmo grupo de arquivos.

c.

D.

Capítulo 7: Respostas da rev¡são de Iição

Lição 1

1. Respostas corretas: A e C

Respostas

A. Correta: Se você está importando dados, precisa de permissões SELECT, IN-SERT eALIER TABLE no destino. Contudo, se você náo desativar as triggers eas constraints de verifïcação, não precisará da permissáo AL|ER TABLE.

B. Incorreta: Se você está importando dados, precisa de permissões SELECT,IN-SERT eALTER TABLE no destino. Contudo, se você não desativar as triggers eas constraints de verificaçã,o, não precisará da permissão ALTER TABLE.

C. Correta: Se você está importando dados, precisa de permissõe s SELECT, IN-SERT eALTER TABLE no destino. Contudo, se você não desativar as triggers eas constraints de verificação, náo precisarâ da permissão ALTER TABLE.

D. Incorreta: Se você está importando dados, precisa de permissões SELECT,IN-SERT e ALIER TABLE no destino. Contudo, se você náo desativar as triggers eas constraints de verificação, não precisarâ da permissáo AL|ER TABLE.

2. RespostacoÍretatC

A. Incorreta: Embora seja possível publicar as tabelas do Oracle no SQL Server, issoé mais invasivo do que usar o Import and Export \rfizardparumover os dados.

B. Incorreta: Você precisa codificar um comando BCP para cada tabela pan aqual está importando dados, o que é menos eficiente do que usar o Import andExport Wizard.

C. Corueta:. O Import and Export Wizard permite conectar com o Oracle, selecionarvárias tabelas e mover os dados para o SQL Server em uma única operaçáo.

Page 615: Livro_SQL

6L4 Respostas

D. Incorreta: OPENROWSET pode mover uma única tabela por vez, o que é me-nos eficiente do que usar o Import and Export Wizard.

Capítulo 7: Respostas do cenário de caso

Cenário de caso: Projetando uma estratégiade importação para a Coho Vineyard

1. Você poderia projetar uma rotina de exportaçáo para transferir dados de cada viníco-\a pan o escritório central usando o Import and Export

"lñzard. Contudo, mais pro-

vavelmente você também desejarârealizar notificações, validação de dados e outrasverificações empresariais nos dados, antes de carregar no banco de dados central.Portanto, você tem um processo melhor usando os recursos completos do SSIS.

2. Você poderia usar BCP otJ BULK INSERT para mover os dados EDI para uma tabela,antes de executar um procedimento armazenado (stored procedure) que fragmenteo código XML e realize todo o processamento empresarial. Usando todo o poder doSSIS, você poderia construir um processo de importaçáo mais robusto, que poderiamanipular vários arquivos em paralelo, validar as estruturas XML e até analisar o

código XML durante a importaçáo de dados.

Capítulo 8: Respostas da rev¡são de lição

Lição 1

1. Resposta correta:. C

A. Incorreta: Mesmo que você crie uma condição que verifique todos os bancosde dados, o proprietário de um banco de dados pode optar por não se inscreverem uma diretiva a menos que você tenha a conformidade como imperativa.

B. Incorreta: Embora você pudesse crtar uma categoria de diretiva que tivessea propriedade Mandate ativada e adicionar a diretiva na categoria, isso exige

mais trabalho do que apenas adicionar a diretiva na categoria padrâo.

C. Correta: A categoria paüão é configurada com a propriedade Mandate ativa-da. Além disso, você náo pode desativar a propriedadeMandate.

D. Incorreta: Embora você pudesse verificar as diretiva manualmente, isso exigemais trabalho do que apenas adicionar a diretiva na categoria paûão.

Capítulo 9: Respostas do cenário de caso

Cenário de caso: Projetando uma estratégia degerenciamento para a Coho Vineyard

1. O banco de dados HR é obrigado a ser protegido usando TDE; portanto, você devecriar diretivas para garantir que exista uma chave de criptografia de banco de dados,

Page 616: Livro_SQL

que criptografia esteja alivada no banco de dados HR e que o certiflcado que TDE

está usando exista no banco de dados mestre. Como atabela Salary é criptografadacom um certificado, você deve criar uma diretiva qve garanta que o cerûficado exis-ta no banco de dados HR para suportar criptografia. Você também deve criar umadiretiva paraga:i:antir que os dados da tabela Salary sejam criptografados. A direçáonão quer CLR ou Ad Hoc Remote Queries ativados; portanto, você precisa criar umadiretiva paraverificar a imposição da configuração da ârea de superffcie. Por fim, os

backups são obrigados agarantir a capacidade de recuperação; portanto, você deve

criar uma ou mais diretivas para verificar aiútima data de backup bem-sucedido.

Capítulo 9: Respostas da rev¡são de lição

Lição 1

A. Incorreta: Se você começar com uma restauração do backup completo maisrecente, perderâ todas as transações das quais ainda não foi feito backup.

B. Incorreta: Você não pode iniciar uma sequência de restauraçáo com um ba-ckup diferencial.

C. Correta: O primeiro passo de toda operação de restauraçáo é fazet o backupdo final do 1og. Contudo, o comando BACKUP LOG grava uma entrada no logde transação, assim como no arquivo de dados mestre. Se o banco de dadosestá offline, você pode fazer o backup do log de transação, mas náo gravar îoarquivo de dados mestre. Aopçâo NO_TRUNCATE permite fazerbackup do logde transação sem gravar no arquivo de dados mestre.

D. Incorreta: A opção TRUNCATE_ONLY do comando BACKUP LOG não existemais no SQL Server 2008.

Lição 2

1. Resposta corretat C

A. Incorreta: Embora a opção NORECOVERY permita restaurar os backups dife-renciais e de log de transação subsequentes, a restauração falhatâ, pois o SQL

Server não tem uma estrutura de diretório válido para restaurar o banco de

dados.

B. Incorreta: A opçáo CONTINUE_IAFTER_ERROR é usada para Íratar de mídiade backup danificada e náo para mover arquivos durante uma restauraçáo.

C. Correta: Como você tem uma nova estrutura de atmazenamento no sistemade arquivos, precisa mover os arquivos de dados e de 1og para novos locais.A opção MOVE permite especificar um novo local para arquivos quando vocêrestaura o backup completo.

D. Incorreta: A opção PARTIAL permite fazer uma restauração parcíaI, mas náomove arquivos de dados.

1. Resposta correta: C

Respostas 615

Page 617: Livro_SQL

616 Respostas

Lição 3

1. Respostas corretas: B e C

A. Incorreta: Você náo pode criar um snapshot de banco de dados em bancos de

dados de sistema.

B. Correta: Embora você náo possa executar consultas full text em um snapshotde banco de dados, pode criar um snapshot de banco de dados em um banco dedados que contém índices full text.

C. Correta: Embora dados FILESTREAM sejam inacessíveis por meio de um snap-shot de banco de dados, você pode criar um snapshot de banco de dados emum banco de dados que esteja ativado para FILESTREAM.

D. Incorreta: Você náo pode criar um snapshot de banco de dados em bancos de

dados de sistema.

Capítulo 9: Respostas do cenário de caso

Cenário de caso: Projetando uma estratégiade backup para a Coho Vineyard

1. Como você pode perder no máximo 5 minutos de dados, os bancos de dados devemter backups de log de transaçáo extraídos a cada 5 minutos. Para satisfazer a ja-nela de paralisaçáo máxima de 20 minutos, você precisa minimizar o número debackups de log de transaçáo que são restaurados; portanto, os backups diferenciaisdevem ser extraÍdos vârias vezes por dia; por exemplo, a cada 4 ou 6 horas. Se

existir espaço de armazenamento suficiente para backups completos, você tambémdeve extrair um backup completo a cada dia.

2. Os bancos de dados Customer e Order implementam particionamento. Os dados commais de dois meses sáo armazenados em uma tabela de arquivamento que resideem um grupo de arquivos separado; portanto, você pode tirar proveito de backupsde grupo de arquivos. Usando backups de grupo de arquivos, você pode restaurar aspartes ativas dos bancos de dados Customer e Order separadamente. Como os dadosdo arquivamento podem ficar offline por um período de tempo mais longo, um ba-ckup de grupo de arquivos permite colocar os aplicativos online mais rapidamente,enquanto uma restauração dos dados de arquivamento ocorre em segundo plano.Você também deve programar os backups de log de transaçáo e diferenciais para omesmo horário dos bancos de dados Account, Inventory e Promotíons.

õ. Como o banco de dados É11? implementa TDE, você deve ter um backup das chavespúblicas e privadas do certificado no banco de dados mestre em que a chave de crip-tografia do banco de dados HR é baseado. Você também deve ter backups da chavemestra de serviço, da chave mestra do banco de dados mestre e da chave mestra dobanco de dados HR. O banco de dados HR deve ter os backups completos, diferen-ciais e de log de transação programados para os mesmos intervalos que o restantedos bancos de dados. Os backups das chaves mestras e do certificado devem serarmazenados em um local separado dos backups de banco de dados.

Page 618: Livro_SQL

Capítulo 10: Respostas da revisão de lição

Lição 1

A. Incorreta: O 1og de eventos do Windows poderia conter informações de errosobre um job que não funcionou, mas você não pode obter uma lista dos jobsque não funcionaram a partir do log de eventos.

B. Correta: O histórico de job dentro do SSMS lista todos os jobs que foram exe,cutados, junto com seu status de execuçáo.

C. Incorreta: O log de eventos do SQL Server Agent poderia conter informaçõesde erro sobre um job que não funcionou, mas você não pode obter uma listados jobs que não funcionaram apartir do log de erro.

D. Incorreta: O log de erro do SQL Server poderia conter informações de erro so-bre um job que não funcionou, mas você não pode obter uma lista dos jobs quenão funcionaram a parlir do log de erro.

lição 21. Resposta correta: A

A. Correta: Você pode configurar um alerta do SQL Server Agent que notifique umoperador e também execute um job que possa aumentar o espaço no arquivo dedados.

B. Incorreta¡ O System Monitor não pode executar um processo para expandir oarquivo de dados.

C. Incorreta: O Event Viewer náo pode executar um processo para expandir oarquivo de dados.

D. Incorreta: O Network Monitor náo pode executar um processo para expandir oarquivo de dados.

1. Resposta correta: B

Respostas 617

Capítulo 10: Respostas do cenário de caso

Cenário de caso: Projetando uma estratégiade automação para a Coho Vineyard

1. os backups de banco de dados devem ser configurados usando-se três jobs dife-rentes - um para backups completos, um para backups diferenciais e um parabackups de log de transação. Embora você pudesse configurar replicaçáo por mergepara ser execufada continuamente a parfir do escritório central, uma solução me-lhor seria permitir o início manual do processo de sincronismo. As cargas de esto-que das vinícolas devem ser construídas usando-se pacotes do Integration Servicesque sejam executados a pantir de jobs do SQL Server Agent. Como você não podeprever o momento em que os arquivos de seus parceiros EDI chegaráo, poderia criar

Page 619: Livro_SQL

618 Respostas

um alerta WMI que fosse disparado quando um arquivo fosse criado no diretórioEDI. Então, o alerta poderia iniciar um job que executasse um pacote SSIS paraimportar o arquivo para mais processamento. Por fim, deve ser configurado umjob para executar ao final de cada mês, que arquive os dados nos bancos de dadosCustomer e Order.

Capítulo 11: Respostas da revisão de Iição

Lição 1

1. Resposta correta: D

A. Incorreta: Se o TCP endpoint de TSQL fosse desativado, você náo poderia se

coneclat com o SQL Server usando SSMS e os usuários não receberiam nenhu-ma mensagem de erro.

B. Incorreta: Se o TCP endpoint d,e TSQL fosse interrompido, você náo poderia se

conectar com o SQL Server usando SSMS.

C. Incorreta: As conexões remotas sáo ativadas porque você pode se conectarcom o SgL Server apartir de seu desktop.

D. Correta: Se os usuários não têm permissáo CONNECT no TCP endpoint de

TSQL, eles recebem a mensagem de erro 'Access denied" (acesso negado).

2. Resposta cofieta. C

A. Incorreta: Se o modo de autenticação é configurado da mesma forma em cadaendpoint, isso não impede a configuraçáo.

B. Incorreta: Se o modo de autenticação é configurado da mesma forma em cadaendpoint, isso não impede a configuração.

C. Cowetat Se você tiver verificado a conexão e a autenticação, somente umadivergência nas configurações de criptografia impedirá a configuração do espe-

thamento de banco de dados.

D. Incorreta: Se a criptografia é configurada da mesma forma em cada endpoint,isso não impede a configuração.

Lição 2

1. Resposta correta: B

A. Incorreta: Você pode usar o SQL Server Configuration Manager para ativare desativar conexões remotas, mas não pode usá-lo pan ativar e desativarrecursos.

B. Correta: A ferramenta sp_configure é usada para ativil e desativar recursos.

Page 620: Livro_SQL

c. Incorreta: O SQL Server Surface Area Configuration Manager podia ser usadopara ativar e desativar recursos no SQL Server 2005. Contudo, o utilitário foiremovido do SQL Server 2008.

Incorreta: O SQL Server Installation Center é usado para instalar, desinstalate gerenciar instalações.

Lição 3

1. Respostas corretas: A e C

D.

A. Correta: Você deve mapear os logins do SQL Server em cada grupo do Win-dows correspondente a um aplicativo, adicionar o login como usuário no bancode dados apropriado e, em seguida, adicionar o usuário no role de banco de

dados apropriada. Depois que você concluir esses passos, todos os proprietá-rios de aplicativo precisarão dacapacidade de gerenciar o grupo (ou grupos) do

Windows apropriado pan salisfazer suas necessidades

B. Incorreta: Os membros do role securityadmin podem executar CREATE Lo-GIN, ALIER LOGIN e DROP LOGIN. Contudo, os membros do role podem geren-

ciar qualquer login (exceto os logins que sáo membros do role sysadmín) e náoapenas os logins associados a um aplicativo específico.

C. Correta. Você deve mapear os logins do SQL Server em cada grupo do Win-dows correspondente a um aplicativo, adicionar o login como usuário no bancode dados apropriado e, em seguida, adicionar o usuário no role de banco de

dados apropriado. Depois que você concluir esses passos, todos os proprietá-rios de aplicativo precisaráo dacapacidade de gerenciar o grupo (ou grupos) do

Windows apropriado para safisfazer suas necessidades

D. Incorreta: Se você adicionar os proprietários de aplicativo no rcle sysadmín,terâ abandonado o controle da instância e elevado permissões inadequada-mente.

R€sposta coÍretat C

A. Incorreta: os membros do role diskadmin podem gerenciar recursos de disco,mas náo podem fazerbackup de um banco de dados.

B. Incorreta: Os membros do role db-owner podem fazer backup de um banco de

dados, mas também têm autoridade para executar qualquer otrra açáo dentrodo banco de dados.

C. Corceta: os membros do role db_backupoperatorpodemfazerbackup do ban-co de dados, mas náo podem restaurar um banco de dados nem acessar quais-quer objetos dentro do banco de dados.

D. Incorreta: Os membros do role sysadmín podem fazer backup de um banco de

dados, mas também podem executar qualquer outraaçâo dentro da instância.

Respostas

Page 621: Livro_SQL

620 Respostas

Lição 4

1. Resposta corÍetal.C

B. Incorreta: Embora os usuários tivessem permissão SELECT em todas as tabe-las, conceder permissões individualmente exige mais trabalho do que concedera permissáo SELECT no banco de dados.

C. Corretal. Quando você concede permissáo SELECT no banco de dados, o usuá-rio pode executar uma instruçao SELECT em qualquer tabela dentro do bancode dados.

D. Incorreta: Embora os usuários tivessem permissáo SELECT em todas as tabe-las, conceder permissões em cada esquema exige mais trabalho do que conce-der permissão SELECT no banco de dados.

2. Itesposta correta: A

A. Correta: DENY VIEW DEFINTION impede que o usuário veja metadados deobjeto aos quais normalmente teria acesso.

B. Incorretaz DENY VIEW ANY DEFINTI)N é uma permissão em nível de instân-cia que se aplica a todo banco de dados dentro da instância.

C. Incorreta: VIEW SERVER STATE permita que uma conexão veja estatísticasde execuçáo da instância e não lida com metadados de objeto.

D. Incorretat REVOKE remove uma instruçã,o GRANT ou DENY que foi executa-da, mas não impede o acesso implícito aos metadados dos objetos em que umusuário tem permissões.

lição 5

1. Resposta correta: A

A. Correta: Você pode criar uma especificação de auditoria de banco de dadospara registrar quaisquer instruções SELECT, INSERT UPDATE, DELETE, BCPou B ULK IN S E RZ executadas na tab ela de registros de pagamento de funcioná-rios, apenas parao grupo de usuários que tenham acesso.

B. Incorreta: Uma trigger de DDL é ativada quando ocorre um evento DDL e náopode registrar acesso a dados.

C. Incorreta: Embora uma trigger de DML possa registrar INSERT, UPDATE e

DELETE, você náo pode registrar uma instruçâo SELECT usando uma triggerde DML.

D. Incorreta: Uma especificação de auditoria de servidor náo pode ter como alvoum objeto dentro de um banco de dados.

2. RespostacoÍÍeta2 C

A. Incorreta: Embora uma trigger de DDL possa fazer a auditoria de uma ins-truçã.o ALTER DATABASE, como ALTER DATABASE não é executada no con-

A. Incorreta: O role db_datawríter não garunte permissáo SELECT

Page 622: Livro_SQL

texto de uma transaçáo, você náo pode impedir a alteraçáo no modelo derecuperação.

B. Incorreta: Uma trigger de DML é. ativada quando dados são alterados e nãoquando o modelo de recuperação muda.

C. Corrcta Como AIiTER DATABASE pode fazer alterações no sistema de arqui-vos, que náo é transacional, você não pode impedir sua execução. Portanto,não é possível implementar o requisito de impedir a altercção.

D. Incorreta: Uma especiflcação de auditoria de servidor pode registrar a mudan-

ça no modelo de recuperação, mas não pode impedir a aTtençáo do modelo de

recuperação.

Lição 6

1. R€sposta correta: B

A. Incorreta: Você poderia usar um certiflcado pan uiptografar cada coluna nobanco de dados, mas isso exige alterações no código para criptografar e des-

cripto gr aÍar do s aplicativos.

B. Correta; O TDE usa um certificado no banco de dados mestre que é empregadopara criptografar uma chave de criptografia de banco de dados. Depois quevocê o ativa, o SQL Server criptografa os dados no disco paraqûe náo possamser lidos por um invasor, sem exigir quaisquer alterações nos aplicativos.

C. Incorreta: Você poderia usar uma chave simétrica para criptografar cada colu-na no banco de dados, mas isso exige alterações no código para criptografar e

descriptografar dos aplicativos.

D. Incorreta: Você poderia usar uma chave assim étrica para criptografar cada co-luna no banco de dados, mas isso exige alterações no código para uiptografare descriptografar dos aplicativos.

2. RespostacorÍeta.C

A. Incorreta: Você poderia usar um certificado parauiptografar cada coluna nobanco de dados, mas isso exige alterações no código para criptografar e des-

cripto gr afar dos aplicativos.

B. Incorreta: Você poderia usar uma chave simétrica para criptografar cada colu-na no banco de dados, mas isso exige alterações no código paractiptografar e

descriptografar dos aplicativos.

C. Correta: O TDE usa um certificado no banco de dados mestre que é empregadopara cripíografar uma chave de uiptografr,a de banco de dados. Depois que está

ativado, o SQL Servet criptografa os dados no disco paruque não possam serlidos por um invasor, sem exigir quaisquer alterações nos aplicativos.

D. Incorreta: Você poderia usar uma chave assim éûica para uiptografar cada co-luna no banco de dados, mas isso exige alterações no código para criplografare descriptografar dos aplicativos.

Respostas 62L

Page 623: Livro_SQL

622 Respostas

Capítulo 11: Respostas do cenário de caso

Cenário de caso: Protegendo a Coho Vineyard1. Se possível, você deve criar um login para cada usuário dos aplicativos baseados

na Web, de preferência passando as credenciais do Windows do usuário paÍa oservidor de banco de dados. os logins devem ser adicionados como usuários dentrodo banco de dados apropriado. Os usuários devem ser adicionados em funções debanco de dados para as quais foram concedidas permissões, para fornecer o acessonecessário aos objetos.

2. Yocê deve criar uma chave mestra no banco de dados Customers. Depois de criada achave mestra, você deve criat uma chave simétrica ou um certificado que possa serusado para uiptografar os cartões de crédito na tabela.

3. Pala fazer auditoria do banco de dados HR, você precisa criar uma auditoria deservidor e, entáo, uma especificaçâo de auditoria de banco de dados mapeada noobjeto de auditoria de servidor.

Capítulo 12: Respostas da revisão de lição

Lição 1

1. Resposta correta: A

A. Correta: System:Processor Queue Length indica o número de processos emnível de máquina que estão esperando que um processador seja alocado.

B. Incorreta: System:Processor Queue Length inclui os pedidos do SQL Serverque estão esperando que recursos de processador sejam alocados. O contadortambém inclui pedidos de todos os outros aplicativos e do sistema operacionalque estão esperando recursos de processador.

C. Incorreta: Você pode obter o número de processadores que esláo realizanð,otrabalho ativamente usando o contador Processor:% Processor Time com todasas instâncias associadas.

D. Incorreta: A quantidade de tempo que determinado processador estâ em uso érccuperada de uma instância do contador Processor:% Processor Time.

tição 21. Respostas corretas: A e D

A. Correta: O System Monitor permite caplurar contadores de desempenho parao estado do hardware, do sistema operacional e de vários subsistemas do SQLServer, os quais podem ser correlacionados a um rastreamento do Profiler paradiagnosticar um problema de desempenho.

B. Incorretat O Database Engine Tuning Advisor é usado para sugerir índices e

partições que podem olimizar o desempenho de uma consulta.

Page 624: Livro_SQL

C. Incorreta: O Resource Governor permite limitar os recursos disponíveis para

uma ou mais conexões.

D. Correta: O Profiler permite capturar a atividade de consulta na instância e,

então, correlacionar as consultas com contadores de desempenho capturadoscom o System Monitor.

Lição 31. Respostas corretas: A e D

A. Correta: Um stack dump (despejo de pilha) é um erro crítico e seria registradono 1og de erro do SQL Server e no log Application Event do Windows.

B. Incorreta: As mensagens de configuraçáo de inicialização são registradas ape-

nas no log de erro do SQL Server.

Incorreta: As falhas de job (job failures) são registradas no log do SQL Server

Agent.

D. Correta: Um processo eliminado é um evento importante e seria registrado nolog de erro do SQL Server e no log Application Event do Windows.

Lição 41. Resposta correta: B

A. Incorreta: Quando um banco de dados está online e tem uma conexáo, o SQL

Server tem os arquivos sob o banco de dados abertos. Você náo pode excluir umarquivo aberto.

B. Correta: Se um sistema de armazenamento em disco fica repentinamente offli-ne, todos os bancos de dados com arquivos no atmazenamento offline regis-tram erros de ativaçáo de dispositivo. Se os erros de ativaçâo de dispositivoocorrem para o banco de dados mastef tempdb ou mssqþlstemresource, a

instância inteira é encertada.

c.

Respostas 623

c. Incorreta: Um erro de ativação de dispositivo para arquivos sob o banco de

dados de reserva de passagens coloca o banco de dados de reservas offline,mas não faz a instãncia inteira ser encerrada.

Incorreta: Se a conta de serviço fosse bloqueada, todas as tentativas subse-quentes de usar a conla seriam recusadas pelo Windows. Contudo, os aplicati-vos que estão em execução sob a conta continuariam a funcionar. Portanto, umbloqueio de conta de serviço impediria ainícializaçâo do SQL Server, mas nãoo faña ficar offline nem geraria erros de ativaçáo de dispositivo.

D.

Lição 51. Resposta correta: C

A. Incorreta: ]É possível que o banco de dados master esteja corrompido, mas acausa rnais provável é uma das alterações que você fez. Como parece que os ar-quivos do banco de dados master foram movidos corretamente, as permissões

Page 625: Livro_SQL

624 Respostas

estão corretas e os parâmetros de inicializaçáo foram allerados corretamente,não é muito ptovâvel que os arquivos do banco de dados master se corrompe-ram simplesmente porque foram movidos para outro local.

B. Incorreta: É possível que o banco de dados mssqlsystemresource esteja cor-rompido, mas a causa mais provável é uma das alterações que você fez. Nãoé muito provável que os arquivos do banco de dados mssqlsystemresource se i I

corromperam porque foram movidos para outro local.

C. Coneta: Uma das alterações que você fez foi mover o banco de dados tempdbpara um novo local. O primeiro passo no processo de movimentaçáo é, alterur obanco de dados tempdb e mudar o local dos arquivos de dados e de 1og. Depoisde encerrar a instância, você precisa mover os arquivos paru o novo local, an-tes de iniciar o backup da instância. A conta de serviço do SQL Server tambémprecisa de permissões Read e Write na pasta dos arquivos do banco de dadostempdb. Você deve verificar se está recebendo erros "File not found" (arquivonão encontrado) para o banco de dados tempdb. É muito mais provável que oSQL Server náo consiga encontrar ou acessar apasta do banco de dados tem-pdb, poryue essa foi uma das alterações feitas na configuração.

D. Incorreta: Um módulo de memória danificado no servidor poderia impedir a i

inicializaçã,o da instância, embora isso não seja muito provável.

:Lição 6 ì

1. Respostascorretas:BeD r

A. Incorreta: A view sys.dm-exec-sessíons fornece informações sobre cada co- inexáo com a instância, mas não contém informações sobre pedidos que estáo 0

ativamente em execução.

B. Correta: A coluna blocking-session-id lista o SPID pelo qual a conexão estásendo obstruída.

C. Incorreta: Embora a view sys.dm-os-waitíng-tasks liste os processos queestão esperando que um recurso se torne disponível, você não podelocalízarprocessos obstruídos usando essa view.

D. Correta: O procedime nto armazenado (stored procedure) de sistema sp_who2, I

qlue faz parte do produto desde o lançamento do SQL Server 6.5, mostra o SPIDque está obstruindo determinado processo.

i Cenário de caso: Projetando uma estratégiade automação para a Coho Vineyard

1. Como os problemas de desempenho estão ocorrendo esporadicamente, a causa maisprovável é um bloqueio. Você deve criar um processo que capture periodicamente

Capítulo 12: Respostas do cenário de caso

Page 626: Livro_SQL

o conteúdo de sys.dm_exec requests pan determinar se está ocorrendo bloqueio.Então, você pode usar a coluna sql_handle para recuperar os comandos que estáosendo executados e contribuem para o bloqueio.

Durante a execução de consolidação noturna, você está fazendo um grande nú-mero de modificaÇões nos dados. Ao mesmo tempo, a replicação por merge estátentando ler as alteraçóes e enviá-las para qualquer assinante que esteja conec-tado. Você pode eliminar a disputa devida à replicação impedindo que o processode merge sincronize as alterações. Se a merge estiver configurada para ser exe-cutada por um (ou mais) job dentro do SQL Server Agent, você para o agente demerge. Se a merge estiver sendo iniciada a panft do assinante, então você podeimplementar uma trigger de logon que impeça uma conexão pelo processo demerge durante a janela de processamento noturna.

Você deve examinar os logs de erro do SQL Server e os logs do Windows Event paradeterminar a origem dos erros. os erros de ativação de dispositivo normalmente sãoocasionados pelo sQL server repentinamente não ser capaz de acessar um arquivode dados ou de log de transação sob um banco de dados, ou por causa de permissõesinsuficientes ou porque o volume de disco está inacessível. Telas azuis nos servi-dores geralmente indicam problemas de processador ou memória e devem ser diag-nosticados com os utilitários de diagnóstico que são incluídos por seu fornecedor dehardware.

2.

5.

Capítulo 13: Respostas da revisão de lição

Respostas

Lição 1

1. Respostas corretas: A, C e D

625

A. Correta: O DTA pode aceitar um arquivo ou uma tabela como origem de catgade trabalho. A origem da carga de trabalho deve ter um procedimento arma-zenado (stored procedure), uma insrrução BULK INSERT SELECT INSERT,UPDATE, DELETE oUMERGE para ser avaliada pelo DTA.

B. Incorreta: Embora um plano de execução de XML seja útil na otimização deuma consulta, o DTA náo pode otimizar um plano de execuçáo.

C. Corretaz O DTA pode aceitar um arquivo ou uma tabela como origem de cargade trabalho. A origem da carga de trabalho deve ter um procedimento arma-zenado (stored procedure), uma instruçâo BULK INSERT, SELECT INSERTUPDATE, DELETE ouMERGE para ser avalîadapelo DTA.

D. Correta: O DTA pode aceitar um arquivo ou uma tabela como origem de cargade trabalho. A origem da carga de trabalho deve ter um procedimento arma-zenado (stored procedure), uma instrução BULK INSERT, SELECT INSERTUPDATE, DELETE oUMERGE para ser avaliada pelo DTA.

Page 627: Livro_SQL

626 Respostas

lição 2

A. Incorreta: A opçáo de móxímo grau de paralelísmo contnoTa o número de pro-cessadores que uma consulta individual pode usar, mas não limita os recursosque podem ser consumidos.

B. Correta: Você pode criar um grupo de cargade trabalho para todos os usuáriosdo marketing e atribuir o gupo de carga de trabalho a um pool de recursos quelimite a CPU e a memória disponível.

C. Incorreta z o limite de custo do regulador de consultas controla o número de

segundos durante os quais uma consulta pode ser executada, dependendo de

uma configuração de hardware específica. Embora o regulador de consultas pos-

sa ser usado para controlar consultas descontroladas, as consultas que ultrapas-sam o limite sáo terminadas, em vez de limitar o impacto para outros usuários.

D. Incorreta: Embora limitar a memória alocada para consultas dos usuários domarketing reserve mais memóriapara outros pedidos, as consultas do marke-fing ainda poderiam consumir todos os recursos de CPU disponíveis e impediro processamento de pedidos de cliente.

Lição 3

1. Resposta correta: C

A. Incorret a: Sys.dm-dm-índex-operational-stats retorna estatísticas de blo-queio, fechamento e acesso de cada índice.

B. Incorretat Sys.dm_db_indexjhysical_stats retorna estatÍsticas de fragmen-tação de cada índice.

C. Coneta: Sys.dm_db_index usage_stats informaaúltimavez que um índice foiusado patasatisfazer um pedido, assim como quantas vezes o índice foi usado.

D. Incorretat Sys.dm_db1míssing_índex_details contêm estatísticas de custo de

consulta para índices sugeridos devido a uma fafta de índice.

Lição 4

1. Resposta correta: B

A. Incorreta: O recurso de gerenciamento baseado em diretiva é usado paraverificarregras em instâncias e náo para reunir informações de espaço e desempenho.

B. Correta: O PerformanceData Warehouse no SQL Server 2008 permite confi-gurar colela de dados rapidamente no SQL Server 6.5 a9.0, para consolidartodo o gerenciamento de capacidade, assim como a análise de parâmetro de

desempenho.

C. Incorreta: Emboravocê pudesse reescrever todo o código usando pacotes SSIS,

isso exigiria mais trabalho do que usar os recursos internos do PerformanceData Warehouse.

1. Resposta correta: B

Page 628: Livro_SQL

D. Incorreta: O System Center Operationspara captutar dados de desempenho para

ção a um parâmetro.

Capítulo 13: Respostas do cenário de caso

Cenário de caso: Projetando uma estratégiade automação para a Coho Vineyard

l. Cada um dos desafios ou problemas enfrentados pela Coho Vineyard exige saída doSQL Trace, assim como um log de contador. Embora os erros e problemas de desem-penho possam ser recentes, você ainda precisa estabelecer uma estratégia de prazomais longo. Emvez de captutat dados somente quando ocorrerem problemas, vocêdeve implementar um Performance Data Warehouse e configunt coTeta de dadosusando os tipos de coletor Performance Counter, Query Activily e SQL Trace.

2. Yocê, pode diagnosticar problemas de desempenho, assim como os erros, usandoos dados armazenados no PerformanceDala Warehouse. guando corrigidos, vocêpode usar os dados do PerformanceDalaWarehouse para estabelecer um parâmetroe, entáo, construir relatórios que destaquem quando o sistema tiver se desviado dasvariações que estabelecer como aceitáveis dentro de seu ambiente.

Manager 2007 não pode ser usadoserem usados na avaliaçáo em rela-

Capítulo 14: Respostas da revisão de lição

Respostas

Lição 1

1. Resposta correta: C

A. Incorreta: O SQL Server 2008 náo é suportado no Windows 2000 Server.

B. Incorreta: O SQL Server 2008 nâo é suportado no Windows 2000 Server.

C. Correta: O Windows Server 2OO3 edição Standard pode ser usado para cons-truir um cluster de dois nós com um custo mínimo.

D. Incorreta: O Windows Server 2003 edição Enterprise pode ser usado paraconstruir um cluster de dois nós, mas é uma solução mais cara do que o Win-dows Server 2OO3 ediçâo Standard.

2. RespostacoÍÍeta. A

A. Correta: O Windows Server 20OS edição Standard suporta um cluster padráode dois nós, o que permite que um nó falhe, com o aplicativo de distribuiçáoainda operacional. Esta é a opção mais barata.

B. Incorreta: Um cluster de conjunto de nós de maioria com dois nós pode serconstruído no Windows Server 2OO3 edição Standard. Contudo, a falha de umúnico nó faz o cluster inteiro ficar indisponível.

Page 629: Livro_SQL

628 Respostas

C. Incorreta: O Windows Server 2OO3 ediçâo Enterprise suporta um cluster pa-dráo de dois nós, mas a um custo mais alto do que o Windows Sewer 2003edição Standard.

D. Incorreta: Um cluster de conjunto de nós de maioria com dois nós pode serconstruído no Windows Server 2003 edição Enterprise. Contudo, afalhade umúnico nó faz o cluster inteiro ficar indisponível.

3. Itesposta correta: B

A. Incorreta: O serviço Server gerencia compartilhamento de arquivo, impressãoe named pipes.

B. Correta: As verificaçóes de vitalidade são executadas pelo serviço RPC.

C. Incorreta: O serviço Net Logon suporta autenticaçáo passagem.

. D. Incorreta: O serviço Terminal Services permite que vários usuários se conec-tem de forma remota no desktop em um servidor.

Lição 2

1. R€sposta corÍeta.C

A. Incorreta: O 1og shipping não fornece failover automático.

B. Incorreta: A replicação náo fornece failover automático.

C. Correta: O failover cluster protege contra falha de hardware e pode detectaruma paralisaçáo e fazer failover em outro nó automaticamente.

D. Incorreta: Os snapshots de banco de dados não fornecem nenhuma tolerânciaà falha para defeitos de hardware.

2. Resposta correta: D

A. Incorreta: O SQL Server 2008 não é suportado no Windows 2000.

B. Incorreta: O SQL Server 2008 não é suportado no Windows 2000.

C. Incorreta: Devido às necessidades de processamento, a TieyResearch precisa deno mínimo três nós de cluster para garanlir que o desempenho não degrade. O

Windows Server 2OO3 ediçâo Standard suporta apenas um cluster de dois nós.

D. Correta: Devido às necessidades de processamento, aTrey Research precisa deno mínimo três nós de cluster para garantir que o desempenho não degrade. oWindows Server 2003 edição Enterprise suporta até quatro nós em um cluster.

Capítulo 14: Respostas do cenário de caso

Cenário de caso: Planejamento para alta disponibilidade1. Ilespostas corretas: B e D

A. Incorreta: Um cluster de conjunto de nós de maioria com apenas dois nós nãofornece nenhuma tolerância à falha.

Page 630: Livro_SQL

B. Correta: Você pode confïgurar um cluster padrão de dois nós para os bancosde dados externos, assim como um cluster padrão de dois nós separado paratodos os bancos de dados internos. Essa tecnologia fornece recursos de failoverautomatizados, ao passo que também satisÍaz os requisitos de disponibilidade.

c. Incorreta: Você pode configurar espelhamento de banco de dados para failoverauíomatizado, mas os aplicativos ASP e ColdFusion não podem tirar proveito dacapacidade de redirecionamento transparente de clientes e, assim, exigem que

você os configure novamente para aponfar pan o banco de dados de espelho.

D. Correta: A replicação é necessária para mover dados dos bancos de dados ex-

ternos para um banco de dados dentro do firewall, para que o marketing possa

fazer sua análise.

Resposta correta: D

A. Incorreta: O failover cluster mantém apenas uma cópia dos dados e náo pode

ser usado para mover dados dos bancos de dados externos dentro do firewalldo departamento de marketing.

B. Incorreta: O espelhamento de banco de dados pode enviar os dados relaciona-dos a clientes e pedidos dos bancos de dados externos para uma instância doSQL Server dentro do firewall, mas os bancos de dados de espelho sáo inaces-síveis para os usuários.

C. Incorreta: Log shipping pode ser usada para manter uma cópia dos dados naqual eles podem ser acessados pelo marketing, mas existe um tempo de atrasonos dados. Todos os usuários teriam que ser desconectados do banco de dados

antes que uma operaçáo de restauração pudesse ser executada.

D. Correta: Você pode usar replicação para mover dados dos bancos de dados exter-

nos dentro do firewall e manter os dados quase em tempo real, e isso náo exigeque todos os usuários estejam fora do banco de dados para aplicar alterações.

R€sposta correta: A

A. Correta: A Margie's Travel precisa configurar dois servidores para fornecer ca-pacidade de failover automâtico para os bancos de dados que dáo suporte paraos aplicativos da Web. Dois servidores também precisam ser configurados parafornecer failvover automático para os bancos de dados que dáo suporte paraaplicativos internos. O Windows Server 2003 ediçáo Standard com SQL Server

2008 Standard suporta um cluster de dois nós, assim como espelhamento de

banco de dados, com o custo mais baixo de todas as opções.

B. Incorreta: A Margie's Travel precisa configurar dois servidores para fornecercapacidade de failover automâtico para os bancos de dados que dão suportepara os aplicativos da Web. Dois servidores também precisam ser configuradospara fornecer failover automático para os bancos de dados que dáo suportepara aplicativos internos. O Windows Server 2003 ediçáo Enterprise com SQLServer 2008 Standard suporta um cluster de dois nós, assim como espelha-mento de banco de dados, mas a um custo mais alto do que o Windows Server

2003 ediçâo Standard.

2.

Respostas 629

3.

Page 631: Livro_SQL

630 Respostas

c. Incorreta: A Margie's Travel precisa configurar dois servidores para fornecercapacidade de failover attomâtico para os bancos de dados que dão suportepara os aplicativos da web. Dois servidores também precisam ser configuradospara fornecer failover automâtico para os bancos de dados que dão suportepan aplicativos internos. o windows server 2oo3 ediçáo Enterprise com selserver 2008 Enterprise suporta um cluster de dois nós, assim como espelha-mento de banco de dados, mas a um custo mais alto do que o windows seryer2003 ediçáo Standard.

Incorreta: A Margie's Travel precisa configurar dois servidores para rornecercapacidade de failover automático para os bancos de dados que dáo suportepara os aplicativos da web. Dois servidores também precisam ser configuradospara fornecer failover automático para os bancos de dados que dão suportepara aplicativos internos. o windows server 2ooz edição Dataceîter com solServer 2008 Datacenter suporta um cluster de dois nós, assirn como espelha-mento de banco de dados, mas a um custo mais alto do que o windows seryer2003 ediçâo Standard.

D.

Capítulo 15: Respostas da revisão de lição

Lição 1

1. Resposta correta: B

A. Incorreta: Publicador é um role de um banco de dados participante da replica-çãro.

B. correta: o principal, que é um dos roles de espelhamento de banco de dados, es-pecifica o banco de dados que está aceitando conexões e processando transações.

C. Incorreta: Servidor primârio é um role genérico na arquitetura de Alta Dispo-nibilidade.

D. Incorreta: O servidor monitor participa do log shipping.

2. Respostas corretas: B e D

A. Incorreta: o modo de operação Alta segurança nã,o usa uma witness (teste-munha).

B. Correta: O modo de operação Alta Disponibilidade tem uma witness (testemu-nha) que é usada para arbitrar o failover automático.

c. Incorreta: A witness (testemunha) não pode servir o banco de dados.

D. Correta: Um único servidor de witness (testemunha) pode atender várias ses-sões de espelhamento de banco de dados.

5. Respostas corretas: B e D

A. Incorreta: o estado padrão é. sroppED, que não permite a criaçâo de conexões.

B. Correta: Você deve especificar um número de porta para comunicação.

Page 632: Livro_SQL

C. Incorreta: Esta opção está disponível somente para endpoints HTTP com car-ga útil SoAP.

D. Correta: PaÍatÍocat transações entre o banco de dados principal e de espelho,

o endpoint criado na instância que contém esses bancos de dados deve ser con-figurado com o role PARTNER ouALL.

Lição 2

1. Respostas corretas: B e D

A. Incorreta: A distribuiçáo é configurada quando você está implementando re-plicação.

B. Correta: Um backup do banco de dados primário é restaurado no espelho.

C. Incorreta: Se o banco de dados é recuperado, não pode participar da sessão de

espelhamento de banco de dados.

D. Correta: O banco de dados não deve ser recuperadoparapafücipar do espelha-mento de banco de dados.

2. Resposta correta: A

A. Correta: O banco de dados deve estar no modelo de recuperação Completo.

B. Incorreta: O espelhamento de banco de dados náo existia no SQL Server 2000.

C. Incorreta: Se o banco de dados primário está em um estado somente leitura,transações náo podem ser executadas nele; portanto, ele é incompatível com oespelhamento de banco de dados.

D. Incorreta: o banco de dados não pode ser colocado no modelo de recuperação

Registro em massa enquanto está participando do espelhamento de banco de

dados.

3. R€spostas corretas: B e C

A. Incorreta: O modo de operação Alto Desempenho tem transferência de dados

assíncrona.

B. Correta: Os modos de operação Alta Disponibilidade e Alta Segurança têmtransferência síncrona. , .

C. Corretaz O failover automático está disþonível somente no modo de operação AltaDisponibilidade e apenas quando o servidor de witness (testemunha) está online.

D. Incorreta: Os modos de operaçáo Alta Segurança e Alto Desempenho exigem

Respostas

failover manual.

tição 3

1. Respostas corretas: Ae D

A. Correta: O modo de operaçáo Alto Desempenho tem transferência de dadosassíncrona.

Page 633: Livro_SQL

632 Respostas

B. Incorreta: Os modos de operação Alta Disponibilidade e Alta Segurança têmtransferência síncrona.

Incorreta: o failover automático está disponível somente no modo de opera-ção Alta Disponibilidade, quando uma witness (testemunha) está presente.

Correta: Os modos de operaçáo Alta Segurança e Alto Desempenho exigemfailover manual.

c.

D.

2. Respostas corretas: B e D

A. Incorreta: o modo de operação Alto Desempenho tem transferência de dadosassíncrona.

B. correta: os modos de operação Alta Disponibilidade e Alta segurança têmtransferência síncrona.

c. Incorreta: o failover automâtico está disponível somente no modo de opera-çáo Alta Disponibilidade, quando uma witness (testemunha) está presente.

Correta: Os,modos de operação Alta Segurança e Alto Desempenho exigemfailover manual.

D.

Capítulo 15: Respostas do cenário de caso

Cenário de caso: Planejamento para alta disponibilidade1. Resposta correta: A

A. Correta: O failover cluster fornece detecção de falhas automática e failoverautomático.

B. Incorreta: O modo de operação Alto Desempenho náo pode fazer failover au-tomaticamente.

C. Incorreta: o modo de operação Alta Segurança não pode fazer failover auto,maticamente.

D. Incorreta: A replicaçáo não pode fazer failover automaticamente.

2. Resposta correta: B

A. Incorreta: o modo de operação Alto Desempenho não pode fazer railover avtomaticamente.

B. Correta: O espelhamento de banco de dados no modo AIta Disponibilidade fazfailover automaticamente e garante que o catâlogo de produtos seja redundan-te na instalaçáo secundária.

C. Incorreta: A replicação nã,o saÍisfaz as necessidades de failover.

D. Incorreta: O log shipping náo satisfaz as necessidades de failover.

Page 634: Livro_SQL

3. Resposta corretal. C

A. Incorreta: O log shipping não funciona porque todos os usuários do departa-mento de marketing precisam ser desconectados antes que um backup de logde transação possa ser feito.

B. Incorreta: O failover cluster mantém apenas uma cópia do banco de dados;portanto, náo pode ser usado para satisfazer as necessidades de produçáo derelatórios.

C. Cofieta:. Embora a replicaçáo transacional com assinantes de atualizaçáo en-fileirada não seja uma solução peffeita, porque dados poderiam ser alteradosno assinante, ela sattsfaz as necessidades de produçáo de relatórios.

D. Incorreta: A replicaçáo de snapshot não satisÍaz as necessidades de produçãode relatórios em tempo quase real.

4. Resposta correta: A

A. Correta: Como os bancos de dados Orders, Customers, Creditcards eProductsdependem todos uns dos outros, o failover cluster garanfe que todos eles te-nham o failover feita em conjunto, no caso de uma paralisação.

B. Incorreta: Embora o espelhamento de banco de dados no modo de operaçáoAlta Disponibilidade atenda a necessidade de um failover automatizado a dis-ponibilidade ê efetuada em nível de banco de dados. Portanto, um failover po-deria causar inconsistêncialógica entre os quatro bancos de dados. As transa-

ções que abrangem vários bancos de dados são divididas pelo espelhamentoem transações individuais dentro de um único banco de dados epodemfazercom que linhas sejam efetivadas no espelho de um banco de dados e nâo te-nham valores correspondentes em outro banco de dados.

C. Incorreta: A replicaçáo transacional com assinantes de atualização enfileiradanã,o satisfaz os requisitos de failover.

D. Incorreta: O log shipping não satisfaz os requisitos de failover.

Respostas 633

Capítulo 16: Respostas da revisão de lição

Lição 1

1. Resposta corfeta: B

A. Incorreta: Principal é um role de um banco de dados no espelhamento de ban-co de dados.

B. Correta: O log shipping tem bancos de dados que podem estar no role de pri-mário ou secundário.

C. Incorreta: O distribuidor ê. a instância que contém o banco de dados de distri-buição utilizado na replicação.

D. Incorreta: Standby é um modo em que um servidor secundário pode esta¡mas não é um role dentro de uma arquitetura de log shipping.

Page 635: Livro_SQL

634 Respostas

Lição 2

1. Resposta correta: B

A. Incorreta: A chave mestra de banco de dados é exigida somente para descrip-tografar dados; ela náo impede que o banco de dados seja acessível.

B. Correta: Sern os logins, o banco de dados secundário não pode ser acessado.

C. Incorreta: Os jobs do SQL ServerAgent não são necessários patatorîar o ban-co de dados secundário acessível.

D. Incorreta: As triggers de DDL não são necessárias paÍatornar o banco de da-dos secundário acessível

Lição 3

1. Resposta correta: B

A. Incorretâ: Um comandoALTER DATABASE náo pode ser usado pararccuperatum banco de dados.

B. Correta: Restaurar o banco de dados com a opçáo RECOVERY laz com que ele

fique online.

C. Incorreta: A opçáo STANDBY é, usada para permitir acesso somente leituraa um banco de dados, enquanto também permite que mais logs de lransaçáosejam restaurados. Você náo pode executar transaçóes em um banco de dados

que esteja em Standby Mode.

D. Incorretat ALTER L)GIN é usado para modificar um login.

Capítulo 16: Respostas do cenário de caso

Cenário de caso: Planejamento para alta disponibilidade1. Resposta correta: A

A. Correta: Os bancos de dados Bookings e Customers dependem um do outro.Pala gannrir a integridade entre os bancos de dados, eles devem residir namesma instância do SQL Server e ter o failover feito em conjunto. O failovercluster oferece a (tnica maneira de garantir que os dois bancos de dados te-nham o failover feito em conjunto e que a integridade entre os bancos de dadosseja mantida.

B. Incorreta: O log shipping opera sobre backups de 1og de transaçáo, com cada

tog de transação localizado em um banco de dados. Portanto, é possível res-

tavrat o banco de dados Bookings em um estado diferente do banco de dadosCustomers.

c. Incorreta: A replicaçáo opera em nível de banco de dados; portanto, tran-sações podem ser aplicadas em cada banco de dados independentemente.A replicaçáo náo gannte (nem verifica) a integridade entre bancos de dados.

Page 636: Livro_SQL

D. Incorreta: O espelhamento de banco de dados opera em nível de banco de da-dos. Como o escopo das transações é dentro do mecanismo de armazenamentoem nível de banco de dados, o espelhamento de banco de dados não gaÍante aintegridade entre bancos de dados.

2. Resposta correta: D

A. Incorreta: O espelhamento de banco de dados pode manter uma segunda có-pia de um banco de dados em sincronismo com o primário, mas o banco de

dados de espelho frca inacessível.

B. Incorreta: Um snapshot de banco de dados poderia ser criado a cada seishoras para uso na produção de relatórios, o que forneceria acesso aos dados.Contudo, todas as conexões com o snapshot de banco de dados existente te-riam de ser terminadas para regenerar um snapshot de banco de dados com omesmo nome. Um snapshot de banco de dados com um nome diferente poderiaser criado sem terminar as conexões, mas toda a atividade de produção de re-latórios precisaria ser redirecionadapara o novo snapshot de banco de dados.

C. Incorreta: O log shipping pode ser usada para manter uma cópia no StandbyMode, o que permite a ocorrência de operações de leitura. Contudo, todas asconexões de usuário teriam de ser terminadaspara restaurar o próximo backupde log de transação.

D. Correta: Somente a replicaçáo permite que as alterações de um banco de da-dos primário sejam enviadas para um banco de dados secundário, ao passoque também permite que operações de leitura ocorram enquanto as alteraçõesestão sendo aplicadas.

Resposta correta: D

A. Incorreta: O espelhamento de banco de dados não permite que o banco dedados seja colocado no modelo de recuperação Registro em massa.

B. Incorreta: o failover cluster geralmente tem limite de distância e não é umatecnologia apropriada para proteget contra desastres geogtâfr,cos extensos,como um terremoto.

C. Incorreta: Um banco de dados participante da rcplicaçãto pode ser colocadono modelo de recuperaçáo Registro em massa. Contudo, o mecanismo de repli-cação capíurará somente as transações totalmente registradas. As transaçõesminimamente registradas , como BCP ou BULK INSERT, náo seún distribuídaspelo mecanismo de replicaçáo.

D. Correta: Os backups de log detransaçâo ainda podem ser extraídos do bancode dados Products, de modo que esse banco de dados pode ser protegido comlog shipping. Isso também permite que o secundârio seja colocado longe o bas-tanle para evitar um desastre geográfico extenso.

Resposta coÍÍeta:. C

A. Incorreta: Embora revogar a autoridade sysadmin impedisse que alguém al-terasse o modelo de recuperaçáo do banco de dados Products, isso tambémimpediria que esses usuários executassem muitas outras tarefas.

Respostas

3.

4.

Page 637: Livro_SQL

636 Respostas

B. Incorreta: Uma trigger de DDL de banco de dados é, acionada quando a açáoespecificada é executada dentro do banco de dados. A alterução do modelo de re-

cuperação é feita por meio da execução de um coman do ALCER DATABASE , o que

estâ lora da abrangência de uma trigger de DDL em nível de banco de dados.

C. Corretat Uma trigger de DDL uiadana instância serâ ativadaquando uma ins-truçáo ALIER DATABASE for executada. Você pode entáo inspecionar o coman-do executado interrogando o rcle Eventdatr\ para reverter qualquer comandoque esteja altenndo o modelo de recuperaçãrc para Simples.

D. Incorreta: A notificaçáo de evento enviará um aviso quando um evento ocor-rer, mas não impedirâuma açáo.

R€sposta correta: B

A. Incorreta: A chave mestra de instância é vinculada à instância e não é movidaentre instâncias.

B. Correta: A chave mestra de banco de dados é usada pan uiptogtafar a chaveassimétrica; portanto, a chave mestra de banco de dados precisa ser restauradano secundário para poder descriptografar dados de cartáo de crédito.

C. Incorreta: os certificados sáo usados com chaves simétricas.

D. Incorreta: Embora seja uma boaidéia copiar no secundário os jobs do SQL

Server Agent que serão úteis, eles não são necessários para garaîlir uma cópiaredundante se o banco de dados está acessível.

Respostas corretas: A e C

A. Correta: Um sistema de arquivos criptografado náo acarceta sobrecarga que

farâos backups e restaurações demorarem mais. Os backups serão criptografa-dos, o que, combinado com a criptografr,a jâ presente nas informações de carlãode crédito, torna muito mais dificil para aTguém invadir. Mesmo que criminososconsigam roubar as fitas de backup, teriam que desvendar a criptografia dos

arquivos de backup e depois desvendar a criptografr,a de várias camadas dentrodo banco de dados.

B. Incorreta: A cláusula PASSWORD do comando BACKUP não se destina à se-

gurança. A proteçáo é muito fraca e destinada somente a impedir operações de

restauraçáo acidentais.

C. Correta: Os dados do carrâo de crédito já sáo criptografados com uma chaveassimétrica que é criptognfada com a chave mestra de banco de dados. Para

descriptografar os dados decartão de crédito, você precisa da chave assimétricae da chave mestra de banco de dados. Trancando o backup da chave mestra de

banco de dados em um local diferente de seus backups, você rcduz a possibi-lidade de criminosos descriptografarem as informações de cafião de crédito,mesmo que consigam rctbar seus backups.

D. Incorreta; FazeÍ backup da chave mestra de banco de dados em um diretóriodiferente náo oferece maior segurança, pois qualquer um com acesso ao diretó-

5.

6.

Page 638: Livro_SQL

rio de backup de banco de dados normalmente também tem acesso ao diretórioque contém o backup de sua chave mestra de banco de dados.

Resposta correta: B

A. Incorreta: Se você estivesse usando o log shipping interna no SQL Server2000 ediçáo Enterprise, splesolve_logíns faria um novo mapeamento do SID

do login paÍa o usuário de banco de dados apropriado. Entretanto, esse proce-

dimento armazenado (stored procedure) não existe mais no SQL Server 2008.

B. Correta: O comando ALTER LOGIN pode ser usado paru fazer um novo mapea-mento de um usuário de banco de dados em um login.

C. Incorreta: GRANT é usado para definir permissões para um login ou para umusuário, mas os logins do SQL Server poderiam ser mapeados incorretamentenos usuários do banco de dados e uma instruçáo GRANT não corrigiria esseproblema.

D. Incorreta:Emborasp_change_users_logín faça um novo mapeamento de umlogin do SQL Server para um usuário de banco de dados, paru garantir que aspermissões corretas no banco de dados sejam associadas ao login do SQL Ser-

ver, o comando que deve ser usado éALTER LOGIN.

Resposta correta: D

A. Incorreta: À primeira vista, o failover cluster com espelhamento de banco de

dados parece uma boa eslratégia para todos os três bancos de dados. Contudo,o espelhamento de banco de dados detecta e laz failover muito mais rapida-mente do que o failover cluster. Portanto, um failover no cluster causa umfailover em cascata com o espelhamento de banco de dados. Como o espelha-mento de banco de dados náo garanle a integridade entre os bancos de dados,essa combin açã,o náo pode ser usada.

B. Incorreta: O banco de dados Products ptecisa ser colocado no modelo de recu-peração Registro em massa. Portanto, qualquer solução envolvendo replicaçãonão funciona.

C. Incorreta: O log shipping náo mantém a integridade entre os bancos de dadosCustomers e Bookings.

D. Correta: O failover cluster mantém a integridade dos bancos de dados Custo-mers e Bookíngs, pois os dois bancos de dados têm o failover feito em conjun-to. O banco de dados Products pode ser colocado e tirado do modelo de recupe-ração Registro em massa sem afetar o failover cluster ou o log shipping. O logshipping pode ser usada como mecanismo de failover secundário, pois no casode uma perda completa da solução principal, os bancos de dados Customers e

Bookíngs poderão ter alguns problemas de integridade de dados.

E. Incorreta: O espelhamento de banco de dados náo mantém a integridade entreos bancos de dados Customers e Bookings.

7.

8.

Respostas 637

Page 639: Livro_SQL

638 Respostas

Capítulo 17: Respostas da revisão de lição

tição 1

1. Resposta correta: A

A. Correta: A replicação transacional envia as alterações para o servidor de pro-dução de relatórios sem permitir que sejam devolvidas para o publicador.

B. Incorreta: A replicaçáo de snapshot poderia ser usada, mas ela causa uma pa-

ralisação no servidor de relatório sempre que a replicaçáo é executada e man-tém o servidor de relatório apenas em pontos estáticos no tempo, o que nãosaÍisfaz os requisitos da soluçáo.

C. Incorreta: A replicaçáo por merge permite que as alterações sejam enviadas doassinante para o publicador; portanto, ela náo satisfaz os requisitos da solu-

çãLo.

D. Incorreta: A replicaçáo ponto a ponto é uma arquitetura de replicação transa-cional que permite que alterações ocorram em todos os lugares; portanto, elanão satisfaz os requisitos da soluçáo.

2. R€spostacorÍeta:.D

A. Incorreta: A replicaçáo transacional não permite que as alterações sejam en-viadas do assinante parao publicador; portanto, ela não saûsfazos requisitos.

B. Incorreta: Se o publicador estiver offline, o assinante náo poderâ processarnenhuma alteraçáo, caso esteja configurado com assinantes de atualizaçãoimediata; portanto, essa solução nâo satisfaz os requisitos.

C. Incorreta: A replicação por merge poderia ser usada para satisÍazer todos osrequisitos, mas não oferece desempenho melhor do que a replicação transacio-nal com assinantes deatualizaçáo enfileirada.

D. Correta: A replicação transacional com assinantes de atualizaçâo enfilefuadapermite que alterações sejam feitas no assinante, mesmo que o publicador nãoesteja disponível, enquanto também oferece o melhor desempenho de todas as

opções.

Lição 2

1. Resposta correta: C

A. Incorretä: Todos os bancos de dados precisam ser legíveis e graváveis, o quenáo é possível no espelhamento de banco de dados.

B. Incorreta: A replicação transacional em uma configuração de publicador cen-tral tem todas as gravações indo para uma única máquina, o que não satisfazos requisitos de capacidade do cenário.

C. Correta: Areplicação ponto a ponto permite, se desejado, que todos os servido-res sejam legíveis e graváveis, saÎirsfaz os requisitos de atividade e permite quemais de dois servidores participem no envio de alterações entre eles.

Page 640: Livro_SQL

D. Incorreta: A opção de assinantes de atualizaçáo enfileirada permite que todasas alterações sejam colocadas em lotes em um assinante, mas a alta latênciaem potencial e o fato de que todos os servidores têm de replicar seus dados unsnos outros impossibilita essa opçáo para os requisitos empresariais específicosdeclarados.

Lição 3

1. Resposta correta: F

A. Incorreta: O escritório central possui apaftedos dados relacionada ao pedidode entrega e sempre deve ter a cópia mestra dos dados. Os mensageiros estáoentregando os pacotes; portanto, qualquer informação relacionada ao recebi-mento/entrega pertence a cada mensageiro. Como existem requisitos confli-tantes paraa posse de dados entre as partes dos dados, você precisa de pelomenos duas publicações, pois a detecçáo de conflito náo pode ser escolhidadinamicamente para cada ciclo de sincronismo. Todas as publicações devemser criadas no escritório central para gerenciamento. Como o escritório centralpossui as informações de pedido de entrega, o escritório sempre deve vencerem caso de conflito. Como o mensageiro possui as informações de entregalre-cebimento, ele sempre deve vencer em caso de conflito. A configuração descritanesta resposta não satisfaz todos esses req¡risitos; portanto, ela náo funciona.

B. Incorreta: O escritório central possui aparledos dados relacionada ao pedidode entrega e sempre deve ter a cópia mestra dos dados. os mensageiros estáo

entregando os pacotes; portanto, qualquer informação relacionada ao recebi-

mento/entrega pertence a cada mensageiro. Como existem requisitos confli-tantes paÍa a posse de dados entre as partes dos dados, você precisa de pelomenos duas publicações, pois a detecção de conflito náo pode ser escolhidadinamicamente para cada ciclo de sincronismo. Todas as publicações devemser criadas no escritório central para gerenciamento. Como o escritório centralpossui as informações de pedido de enttega, o escritório sempre deve vencerem caso de conflito. Como o mensageiro possui as informações de enûegafte-cebimento, ele sempre deve vencer em caso de conflito. A configuraç áo descrilanesta resposÍanão sattsfaz todos esses requisitos; portanto, elanão funciona.

C. Incorreta: O escritório central possui apaÍledos dados relacionada ao pe-

dido de entrega e sempre deve ter a cópia mestra dos dados. Os mensageirosestáo entregando os pacotes; portanto, qualquer informaçáo relacionada aorecebimentolentrega pertence a cada mensageiro. Como existem requisitosconflitantes paraa posse de dados entre as partes dos dados, você precisade pelo menos duas publicações, pois a detecçáo de conflito não pode serescolhida dinamicamente para cada ciclo de sincronismo. Todas as publi-cações devem ser criadas no escritório central para gerenciamento. Como oescritório central possui as informações de pedido de entrega, o escritóriosempre deve vencer em caso de conflito. Como o mensageiro possui as infór-mações de entregalrecebimento, ele sempre deve vencer em caso de conflito.A configuraçáo descrita nesta respostanáo satisÍaz todos esses requisitos;portanto, ela náo funciona.

Respostas 639

Page 641: Livro_SQL

640 Respostas

D. Incorreta: O escritório central possui aparte dos dados relacionada ao pedidode entrega e sempre deve ter a cópia mestra dos dados. Os mensageiros estãoentregando os pacotes; portanto, qualquer informaçáo relacionada ao recebi-mento/entrega pertence a cada mensageiro. Como existem requisitos confli-tantes paraa posse de dados entre as partes dos dados, você precisa de pelomenos duas publicações, pois a detecçáo de conflito não pode ser escolhidadinamicamente para cada ciclo de sincronismo. Todas as publicações devemser criadas no escritório central para gerenciamento. Como o escritório centralpossui as informações de pedido de entrega, o escritório sempre deve vencerem'caso de conflito. Como o mensageiro possui as informações de entrega/re-cebimento, e1e sempre deve vencer em caso de conflito. A configuraçáo descritanesta resposl,a não salisÍaz todos esses requisitos; portanto, ela náo funciona.

Incorreta: O escritório central possui aparte dos dados relacionada ao pedidode entrega e sempre deve ter a côpia mestra dos dados. Os mensageiros estãoentregando os pacotes; porlanto, qualquer informação relacionada ao recebi-mento/entrega pertence a cada mensageiro. Como existem requisitos confli-tantes paraa posse de dados entre as partes dos dados, você precisa de pelomenos duas publicações, pois a detecção de conflito não pode ser escolhidadinamicamente para cada ciclo de sincronismo. Todas as publicações devemser criadas no escritório central para gerenciamento. Como o escritório centralpossui as informações de pedido de entrega, o escritório sempre deve vencerem caso de conflito. Como o mensageiro possui as informações ds enfregalrc-cebimento, ele sempre deve vencer em caso de conflito. A configuração descritanesta respostanãn safisfaz todos esses requisitos; portanto, ela náo funciona.

Correta; O escritório central possui a parte dos dados relacionada ao pedido deentrega e sempre deve ter a cópia mestra dos dados. Os mensageiros estão en-tregando os pacotes; portanto, qualquer informaçáo relacionada ao recebimen-lolentrega pertence a cada mensageiro. Como existem requisitos conflitantesparaa posse de dados entre as partes dos dados, você precisa de pelo menosduas publicações, pois a detecçâo de conflito não pode ser escolhida dinamica-mente para cada ciclo de sincronismo. Todas as publicações devem ser criadasno escritório central para gerenciamento. Como o escritório central possui asinformações de pedido de entrega, o escritório sempre deve vencer em caso deconflito. Como o mensageiro possui as informações de entrega/recebimento, elesempre deve vencer em caso de conflito. A configuraçáo descrita nesta respostasatisfaz todos esses requisitos.

E.

Capítulo 17: Respostas do cenário de caso

Cenário de caso: Planejamento para alta disponibilidade1. Resposta correta:. C

A. Incorreta: Embora a replicação transacional com a opção de assinantes deatualizaçã,o enfileirada permita que alterações sejam feitas nos dois locais e

Page 642: Livro_SQL

possa arbitrar conflitos de dados, ela náo fornece a flexibilidade da replicaçãopor merge.

B. Incorreta: O log shipping náo permite que alterações sejam feitas no primárioe no secundário.

C. Corceta: A replicaçáo por merge permite alterações no publicador e no assinan-te, enquanto também permite uma soluçáo de conflito avançada que possibilitaque alterações conflitantes na quantidade do pedido sejam resolvidas, dandouma idéia mais precisa do estoque realmente existente.

D. Incorreta: O espelhamento de banco de dados náo permite que alteraçõesocorram,no banco de dados de espelho.

Resposta correta: A

A. Correta: O log shipping exige o mínimo trabalho, pois usa apenas os backupsque jâ estão sendo executados no banco de dados. Ela também deixa o bancode dados inacessível no secundário.

B. Incorreta: A replicaçâo teria de ser configurada nesse ambiente, o que dariamais trabalho do que apenas reulilizar os backups que já estão sendo executa-dos. Contudo, areplicaçâo não Íransfere todos os objetos dentro do banco dedados por padrão. Uma replicação transacional precisaria ser codificada de for-ma personalizada para ter a propriedade de identidade que jâ estâ nas colunasou exigiria a criação de scripts para reintroduzir a propriedade de identidade (oque exigiria muito mais trabalho do que o log shipping).

C. Incorreta: A replicaç ão teriade ser configurada nesse ambiente, o que dariamais trabalho do que apenas reulilizar os backups Ete jâ estáo sendo executa-dos. Contudo, a replicaçáo náo transfere todos os objetos dentro do banco de

dados por padrão. As alterações poderiam ser feitas no assinante e enviadaspara o publicador, o que violaria os requisitos empresariais.

D. Incorreta: A replicação teña de ser configurada nesse ambiente, o que dariamais trabalho do que apenas reutiTizü os backups que já estão sendo executa-dos. Contudo, a replicaçã,o não transfere todos os objetos dentro do banco de

dados por Þ:adráo. As alterações poderiam ser feitas no assinante e enviadaspara o publicador, o que violaria os requisitos empresariais.

Resposta correta: D

A. Incorreta: O R \ID 5 fornece tolerância à falha mínima, mantendo um sobres-salente ativo. Se mais de um disco falhasse, os dois bancos de dados ficariamoflfline.

B. Incorreta: o RAJD 0 não fornece nenhuma tolerância à falha; portanto, essanão é uma solução apropriada.

C. Incorreta: O RAID 1 fornece failover completa de cada disco, mas não temdesempenho tão bom quanto o RAID 1 + 0 (faixa de espelhos).

2.

Respostas 64I

3.

Page 643: Livro_SQL

642 Respostas

D. Correta: O RAID 1 + 0 (faixa de espelhos) fornece máximo failover, ao passoque também atinge o melhor desempenho possível.

4. Resposta correta: B

A. Incorreta: A replicação por merge permite que alterações sejam feitas no assi-nante e enviadas pan o publicador, o que violaria os requisitos empresariais.

B. Correta: A replicaçáo transacional mantém a réplica dentro do departamentode marketing quase em tempo rcal, ao passo que também impede que quais-quer alterações voltem paraa produção.

C. Incorreta: A replicação de snapshot náo atualiza os dados com a mesma fre-quência da replicação transacional e causaria inconsistências nos relatóriosque estivessem sendo executados enquanto um snapshot estivesse sendo apli-cado.

D. Incgrreta: A opçáo de assinantes de atualizaçáo imediata permite que altera-

ções sejam enviadas para o publicador, o que viola os requisitos empresariais.

5. Resposta correta: A

A. Correta: A configuração ponto a ponto permite capacidade de leitura e grava-

ção adicional, enquanto também mantém uma única cópia coerente de todosos dados por todo o ambiente. A expansão futura também é possível, pois a im-plantação pode ter inicialmente dois bancos de dados e, enÍâo, adicionar maisbancos de dados à medida qve a carga de usuário exigir. Os aplicativos devemgalz;ntft que as gravações sejam particionadas entre os bancos de dados paraque náo ocorram conflitos de dados.

B. Incorreta: A configuração bidirecional não oferece nenhuma capacidade deexpansão além dos dois publicadores/assinantes iniciais.

C. Incorreta: A replicação transacional pode aumentar a capacidade de leitura,mas náo a capacidade de gravaçâo.

D. Incorreta: A replicação transacional com a opção de assinantes de atuaTizaçãoenfileirada poderia permitir que leituras e gravações se expandissem para maisde um servidor. Contudo, ela inttoduz muito mais latência do que uma confi-guraçáo ponto a ponto, de modo que os usuários poderiam ver inconsistênciaslógicas em seus dados por causa da latência da replicação.

Page 644: Livro_SQL

AAcesso, controlando, 85-87, 293, 531Acesso de leitura/gravaçáo, backups, 239ADD SIGNATURE,317Adiçáo de memória/CPU em funiionamenta,4748.AEs (Advanced Encryption Standard), 294-2'96Ägendas, 221-222,275Agente de limpeza, 565-566Agentes, replicaçáo, 555-557, 559Agregado s, calculando, 4344Alcançáveis, 311-312Alertas

alertas de arquivo de dados, 376-377cenário de caso, projetando estratégia de automa-

ção,286-289criando, 282-284Database MaiL62enos de falta de espaço,373'374prâtica, criando, 283-284prâtica, criando alertas de falha,374-377

Alertas de armazenamento de versáo, 37 4Algoritmos

criptografia, 294-296de hashing, 332-337preenchimento proporcional, 7 4-T 5veriftcaçáo de espaço, 81t-85

Alinhamento, índices, 189

ALL, esquemas de paftiçáo, l8O-182ArirER, 108-109ALTER DATABASE, 82-83, 86-88, 203, 324-325ÆJTER FULLTEXT INDEX, 167ALTERINDEX, 141_142ALTER INDEX. . ,REBUILD, 82_83ArirER LOGIN, 509-510, 531, 539-541ALTER PARTITION SCHEME, 78O_I82, 188-189ALTER TABLE, 108_109AT;TER TABLE. .,REBUILD, 108_1 10

Ambientes de teste, 243-245Anaþis Services, 4546, 48-49, 27 4-27 5, 35 6-35 7AND,115,361-362ANSI-NULL-DEFAULÏ, 1 O5_1 Oó

Anulaçáo, 105-106. Vertambém NOTNULL; NULLAPI (interface de programação de aplicativos),303-305,314

Aplicativos, sondagem, 347 -3 48Aplicativos Extract, TTansform and Load (ETL),

42-43Applet Windows Service control, 54-55

ApplicationNam e, 359-3 6 7

Á¡ea de superficie, configurando, 299-302Argr¡mentos de pesquisa

curingas, 160

dados full text, 158

dicionário de sinônimos, 160-167, 165-168formas de palavra e proximidade, 159-16llistas de parada, 166,168-169

Armazenamentþ. ver também Considerações sobre

tamanho; Gerenciamento de espaço

arquivos e grupos de arqlu'ivos, TS-79arquivos esparsos, 265-266compactaçåo de pâgina, 108-1 10

dados binários, 103

dados de dataehora, lo2dados decimais, 101

dados numéricos, 100

falha de disco, diagnosticando, 390FILESTREAM, 106_108fora da sede, backups, 247-248índices

arquitetura, 123-128catílogos full text, 151-153cenário de caso, gerenciamento de dados,144-147

cenário de caso, indexaçáo full æxt, l7l-172colunas incluídas, 132-133consultando dados fulI text, 158-161controle de alteraçáo, full text, 153-155criaçáo de índice online, 134-135estafísticas de distribuiçáo, 132-134filtros,733-134idioma, decompositores de palavra e identifica-dores de raiz de palava, 154-155

índices clusterizados, 729-132índices de cobertura, 132-133índices espaciais, 13 5-138índices tuIl text, l5l-154,165-167índices náo clusterizados, 131-132índices XML, 135-136manutenção de, 131-133, l4O-142opções,135-135prãtica, consultas full text, 161-163prâtica, criando índices, 138-139, 155-1 57prâtica, gerenciando índices full texÍ., 167-169prâtica, mantendo, I 42- I 43projetaîdo,129

integridade, mantendo, 89-9o

Page 645: Livro_SQL

644

logs de transação, 76-78partições

cenário de caso, 195-799criando funções de partiçáo, 175-179esquemas de partição, criando, 180-183gerenciando partições, 788-192prârica, particionando, 178-179, lB2-192,186,192-193

tabelas e índices, 184-186problemas de espaço em banco de dados, 372-374sequências de collation, 51-52tabelas, 100tempdb,78-79tipos de dados alfanuméricos, 101-102

Armazenamento fora da sede, backups, 247-248Arquitetura

índices, 123-128Iog shipping, 522-525processadores, 101replicaçáo, 553-556, 564-57 1

System Monitor, 347TCP endpoints, 292-296

Arquivamentos, opções automáticas, 84-85Arquivo de dados mestre, 384-586Arquivo de log de transaçáo mestre, sg4-Sg6Arquivos esparsos, 265-266Arquivos executáveis, etapas de job, 274-2TsArquivos somente leitura, backups parciais, 244-246

Arquivos/grupos de arquivos. Ver tambémDadosbackups, 244-245confrgarando, TS-79crescimento de arquivo, 373-374esquemas de partiçåo, 780-182padr-ao,76-77PRIMARY 75_76tamanho de,73-74

Artigos, replicaçáo, 552, 571-574AS, partiçöes, 175-176AS DEFAULT, 151-153AS PARTITION, I8O_182AS SNAPSHOT 264-267Assemblies .NET, 219A,ssinante, replicaçáo

agentes, 555-557conflitos de dados, 559-561métodos de replicação, 557-559ptâtica, criando a assinatura, 573-5Tsreplicação por merge, 577-580replicação transacional

arquitetura, 568-571controle de alteraçáo, 564-567opções, 566-569validaçáo, 570-572

rcpologra, 5ä4-5þovisão geral, 553-555

índice

Assinaturas, 4445, 221-222Assinaturas digitais, 247-248, 317, 520-323Assinaturas baseadas em dados, 48-49Assinafuras digitais, backups, 247-248Atualizações, Iog shipping, 522-523Atualizações de versáo, 522-523Atualizando, replicaçáo, 559, 566-569Auditoda. Ver também Rastreamentos

c2,327especificações, 325-427falhas de banco de dados, diagnosticando , ZTO-274grupo de eventos de auditoria de segurança,357-359,363-365

ownership chain, 3 I 41 15, 3 I 7pútica, criando uma especificaçáo de auditoria,328-329

triggers de DDL, 324125usuários sem login, 306-307

Auditoria C2,327Autenticaçáo

Database Mail,62-64falhas de banco de dados, diagnosticando ,570-371melhores prâticas,294modos,5l-52principal, 3O3-3O8TCP endpoints, 294-296

AUTHORIZATION, 15 1_1 53AUTO-CLEA,NUB 85_86AUTO_CLOSE, 83-86AUTO-CREATE-STAIISTICS, 83_86, 426427AUTO_SHRINK 83-86AUTO-UPDATE_STATISTICS, 83_86AUTO-UPDATE-STATISTICS-ASYNCH, 85_86Automaçáo de OLE, 299-301,{utomatizando o SQL Server

alertas, criando, 282-284automaçáo de análise, 408cenário de caso, projetando estratégia de automa-

çâo,286-289, 4O24O4criando jobs, 274-280

Avançando,253Avisos, análise de cluster, 465Avisos, grupo de eventos, 357-358

B

BA,CKUP LOG,256-257BACKUP MASTER KEX 315-317Backups. Ver também Restauraçáo

aÍmazenamento de, 2 4 7 I 48backups completos, 240-243, 253-254, 260-261backups diferenciais, 243-245, 253-254, 260-262backups emÍarxas,24lbackups parciais, 244-246cenârio de caso, 27 O-27 2certificados e chaves mestras, 246-248

Page 646: Livro_SQL

compactaçâo, 47-48con;pçátde página, 245-246erros de mídia, 258--260espelhamento de banco de dados, 5O3-5o5FILESTREAM, 106_108grupos de arquivos, 244-245log de transaçáo, 242-244, 253-254, 261-262log shipping, 528-530, 539opções de recuperaçáo, 81-84planos de manutençáo, 245-247prâtica, backup de banco de dados,249-250problemas de espaço, 372-374replicação, 565-567segurança de, 239, 247-248snapshots de banco de dados, 264-268tabelas particionadas e índices, 185

Íempdb,78-79validando,249

Backups completos, 240-243 : Ver também Backupscriaîdo,249log de transação, 253-254restaurando, 254-257 , 260-2,61

Backups diferenciais, 243-245log de transação, 253-254práttica, criando, 250prâtica, restaurando, 2 60-262restaurando, 256-258, 260-262

Backups em faixas, 241

Backups parciais, 785, 244-2,46. Ver tambémBackups

Banco de dados de distribuiçáo, 385-386Banco de dados de quórum, 449451Banco de dados mestre, erros de ativação de dispo-sitivo, 383-586

Banco de dados msdb, 62,219Banco de dados primârio, 524Banco de dados secundário,524Bancos de dados compartilhados escalonados,

4748Bancos de dados de sistema, erros de ativaçáo de

dispositivo, 385-386BCP (Bulk Copy Program)

compactaçáo de página, 108-110constraints, 1 14desempenho de consulta, 132-133desempenho de recuperaçáo, 82-83importando/exportando dados, 2O3-2O5prâtica, exportando dados, 207-210replicaçáo, 557 -558, 560-56 1

BIDS (Business Intelligence Development studio),45-46

BIGINT 1OO

BINARY 103BrT 103BLOBS (objetos binários grandes), 106-108blocking_sessi on _id, 428-429

Bloqueiosescalada,395estatísticas sobrc, 42 6-427falhas de serviço, diagnosticando, 382grupo de eventos, 357-359soluçáo de problemas, 394-395

Bloqueios compartilhados, 394-395Bloqueios de aÍnlizaçâo, 39 4-39 5Bloqueios exclusivos, 394-395Broker, grupo de eventos, 357-358B-tree, 124-725Buffers, 7 4-T 6, 252-254Bulk Copy Program (BCÐ. VaTBCP (BuIk Copy

Program)BULK TNSERT, 82-83, 108-110, ll4,132-133,205-206,560-561

bulkadmin, 305Business Intelligence Development Studio (BIDS),

45-46

índice 645

cCaches

consulta, 84-87, 427-429subsistema de disco, 75-76

Caminhos de pasta, 7 7 -7 Icaptnra de alteraçáo de dados,4748Carga de trabalho

Database,Engine Tuning Advisor (DTA)r 4Ù84llprâtica, analisando carga de trabalho de consul-ta,412

prâtica, atribuindo,4lT-418 l

Resource Govemor e, 41M16Cargas úteis, endpoints, 292Carimbos de datalhora, SS-86, 167CASCADE,114catálogos full text, 155-157, 266-267Cavalo de Tróia Slammer, 299-3oocDoc (cross Database ownership Chaining),300-301

Cenários de casoalta disponibilidade, planejando para, 483487,515-519, 545-549, 585-590

configurando bancos de dados, 93-96distribuindo e particionando dados, 195-199estratégia de automaçáo, projetando, 286-289,402404,441443

estratégla de gerenciamento baseado em diretiva,projeøndo, 233-235

estratégias de backup, criando, 270-272importando dados, 2 l3-2 7 6

indexaçáo fuIl text, l7l-172índices, gerenciamento de dados, 144-147infraestrutura do SQL Server, definindo, 67-69segurança, projetando, 342-343tarefas de gerenciamento de dados, ll7-719

Page 647: Livro_SQL

646

Central Management Server, 222-224Certifi cado público, 3 1 5-3 I 7Certificados

backups, 246-248chaves mestras e, 315--317endpoints, 294-296log shipping, 530-532logins, 303-306pr6tica, criptografando dados com, 357-338visão geral, 315-317, 333-334

Certiflcados privados, 315-317Chamadas de procedimento remotas (RPC), 453CHANGE-RETENTION, 85_86CHAR, 102, l5l-t53Chave de particionamento, 184-185Chave mestra de serviço, 246-247,315-317Chaves

de cluster, 729-132EKM (Extensible Key Management), 335Extemal Key Management, 300-301mestras de serviço, 315-317particionando, 1 84-185prâtica, criando e gerenciando chaves mestras,320-321

Chaves, linha de comando, 2O3-2O5Chaves assiméfl'icas, 246-248, 303-306, 31 5-3 17Chaves de linha de comando, Bulk Copy Program(BCP),2O3-2O5

Chaves estrangeiras, 7 l3-7 I 4, 557-558Chaves mestras, 246-248, 315-317 , 320-321Chaves mestras de banco de dados (DMKS), 246-248,315-317,320-321

Chaves primárias, ll3, l3l-132, 557-559Chaves privadas, backups, 247-248Chaves públicas, backups, 247-248Chaves simétricas, 246-248, 315-317, 3;,33-337CHECK_EXPIR.ATION, 304CHECK-PLANO, 304Checkpoint, 7 4=76, 252--254, 565-567CHECKSUM, 89, 24 1 -243, 245-246Classificação, recursos, 414, 417419CIientProcessID, 359-361CLOSE MASTER KÐ4 3 I 5-3 7 7CLR (Common Language Runtime),47--48, tO4-106, 300-301

CLR ativado, 300-301Cluster

avisos de análise, 465cenário de caso, planejando para alta disponibili-d,ade,483487

chave de, 129-132chaves primárias, 115de failove4 469-472do Windows, 448466componentes, 448449, 46947 1

configuraçáo de disco, 451453

índice

configuraçáo de rede, 452453edições do SQL Servef 2008,4748falhas de serviço, 381-382grupos de, 449,454grupos de eveîtos,325grupos de eventos de rastreamento, SST-363índices, 129-132, 557-558instâncias de SQL Server 20O8,472logins de grupo do Windows, SOS-3O5n6 de,448-449nome de,449prática, criando um cluster do Windows, 45H66prâtica, instalando uma instância em cluster defailover, 473-480

recursos, 449,453-454roles de banco de dados de usuário, õ08roles de servidor fixos, 3O5

segurança, 451SSIS (SOL Server Information Seryices) e,4344tempdb,78-79tipos de, 450-451verifi cações de vitalidade, 47 1

Cluster de conjunto de nós de maioria, 450-451Cluster de instância lúnica,469Cluster de failover. Ver também Espelhamento debanco de dados

avisos de análise de chßter,465cenário de caso, planejando para alta disponibili-dade,483487

cluster do Windows, 448466componentes, 448449, 46947 1

configuração de disco, 451453configuraçáo de rede, 452-453falhas de serviço, diagnosticando, 381-382grupos de cluster,454instâncias de SQL Server 2OO8,472prâtica, criando um cluster do Windows, 456466prâtica, instalando uma instância em cluster defailover, 473-480

recursos,449recursos de cluster, 453454segurança, 451tipos de clusters, 450451verifi cações de vttalidade, 47 7

Cluster padrão, 450Clusters Ativo¿ttivo, 469Clusters e pesquisas finzl, 4344, 4849CodePlex, diretivas, 222-22 4Códigos de erro

deadlock, ã98espaço em disco,372174páginas daniftcadas, 83-B 4

Collation, 51-52, 87-88, 1O5-1OTColunas. Ver também Tabelas

calculadas, 108-109eventos de rastreamento, selecionando, 359-361

Page 648: Livro_SQL

filtro de colvna, 553-554índices full text, l5l-154propriedades de, 105-109sequências de collation, 51-52

Comandos Transact-SQl (T-SOL), 205-206, 27 4-275

Common Criteria, atditoria, 32 7

Common Language Runtime (CLF-), 47-48, 1O4-106,300-301

Compactaçáobackups, 241-242ediçöes do SQL server 2008,4748prâtica, backups compactados, 249tabelas,108-110,113

Comparaçõescondições, 220sequências de collation, 51-52

Comparativos, 77-78Compatibilidad e. Ver Gercnciamento baseado em

diretivaCondiçöes, 22O, 224-232Condições de desempenho, 282-284Conexões

estatísticas de consulta, 427429Resource Governol 414-415TCP endpoints, 292-296

Conexões admin remotas, 3o0-3olconexões de cliente

estatísticas de consulta, 427429Resource Governor, 41 4-41 5SQL Server Configuration Marñge4 54TCP endpoints, 292-296

conexões remotas, 299-301, 379-382, 577-580Configuraçáo de rede, clusters, 452-453, 469470Configurações de pacote, 4544Conft gurações de rcpetiçáo, 27 4Configurando

área de superficie, 299-302arquivos e grirpos de arquivos, TS-79bancos de dados, conflguraido, 8l-88,93-96Database Mail,62-65instâncias, 5 1-55Performance Data Warehous e, 435438

Confi guration M anageL 53-E 5Conflitos, dados, 559-561conjuntos de unidade de disco compartilhados,469-471

Considerações sobre tamanho. Ver também Geren-

ciamento de espaçoarquivos de rastreamento, 356-357backups, 244-246chave de índice,729colunas de índice, 132-133compactaçáo de página, 108-110dados alfanuméricos, 101-1O2dados binários, 105

dados de dataehofa, lo2dados decimais, 101

dados numéricos, 1o0

estatísticas sobre, 42 6427FILESTREAM, 106_108índices náo clusterizados, 131-132páginas, 125-128tabelas,100

Constraintschaves estrangeiras, I 73-l 7 4chaves primárias, 1 13

de verificaçáo, 714=115, 205exclusivas, I 1 4, 13 l-132, 557-558índices clusteri zados, 13 7-l 32padráo, ll4prâtica, implementando, 1 1 5-1 1 6precedência, 43-44replicaçáo, 557-558tabelas, 113-115

Construtor de relatífio, 48-49Consultas. ver também Desempenho de cónsulta

Bulk Copy Program (BCP),204estatísticas sobre, 427 -429grupo de eventos de notificaçåo, 557-358otimização de desempenho , 354,358-359Performance Data Warehouse, 433-434prâtica, analisando carga de trabalho, 4 12

Resource G overrLor, 41 4tempo limite, 556-557views de gerenciamento dinâmicas (DMvs),425

Consultas ad hoc distribuídas, 30O-3OlConta sa, 3O5, 3ll. Ver também Contas administra-tivas

Contadorescontadores de desempenho ,350-351logs,348-353Performance Data Warehouse, 433434prâtica, criando log de contadot 351-353System Monitol, 282, 347-348

coNT,{rNs, 158-161, 165-166CONTAINS FILESTREAM, 77-78CoNTATNSTABLE, 158, 1ó1, 165-166Contas

administrativas, 305, 31 1

de serviço, 51-52, 55-56, 378-386, 469-47 1

protegendo, 305SQL Server Configuration Manager, 53-55

Contas de serviço, 469471falhas de serviço, diagnosticando, 378-386instalando e conftgurando, 5l-52prâtica, criando, 55-56

Contas do Full Text Search Daemon do SQL Server,

471CONTINUE_AFTER-ERROR, 2 59_260CONTINUE-PAST-ERROR, 2 4 I -2 43Controladoras, subsistema de disco, 7 5-7 6

índice 647

Page 649: Livro_SQL

648

Controle de alteraçáo, 85-86, 153-155, 167, 564-567,577-580

Controle de versáo, 85-86, 373-374coPY_oNL\a 243-245Copy-On-Write, 2 65-2 67Correio

Database Mail, 62-65, 3OO-30 Ifalhas de banco de dados, diagnosticando,iT}-374

SQL Mail, 300-301Correspondências exatas, 1 60Corrupçáo, registrando, 370-37 1

CREATE DATABASE, 87 _88, 264_267CREATE INDEX, 82-83, 560_561CREATE PARfITION SCHEME, I8O-182CREATE SCHEM,{,99CREATE USER, 306Credenciais, 62-64, 300-301, 3O3-3O5Crescimento autamâtico, 37 3-3 7 4Criando

alertas, 282-284, 3 7 +-37 7alertas de falha, 37 4-3 7 7assinatura, replicaçáo, 57 3-57 5backups, 249-250bancos de dad,os,78-79chaves mestras, 320-327cluster do Window s, 45 H66condições, 22+-232contas de serviço, 55-56esquemas de partiçáo, 180-183funçáo de classificaçâo, 417419funções de partiçáo, 177-179ndices, 134-735, 138-139, 151-157, 184-185, 427jobs,274-280jobs de log shipping,528-530logins e usuários de banco de dados, ZO*-ZO9logs de contado;E 351-353operadores, 277-28Opools de recurso, 416-417principal, 303-308publicações, replicaçáo, 572-57 4rastreamentos, 363-369rclatírios,44-45snapshots de banco de dados, 264-267tabelas, 99,109-112tabelas e Índices particionados, 184-185

Criptografiachaves mestras, 246-248, 315-317clusters, 45 1

edições do SQL Server 2008,47-48endpoints, 294-296hierarquia, 315-317log shipping, 530-532pútica, s35-339SQL Server Conftguration Maîager, 54visáo geral, 331--335

Índice

Cross Database Ownership Chaining (CDOC),

300-301Cubos, OLAP (Online Analytic Processing), 45--46Curingas, 115,1ó0Cursores, 78-79, 357-358, 373-374Curvas, dados espaciais, 104-106

D

Dados. Ver também Grtpos de arquivos; Arquivosalertas de arquivo, 376-377compactação, 47-48, lO8-11O, 113, 241-242,249,252-253

conflitos, 559-561criptografi a. Ver Cnptografiadistribuindo

cenário de caso, 795-799esquemas de partiçáo, criando, 780-183funçöes de partiçáo, 175-179partições, gerenciando, 188-192prâtica, particionando, 178-179, 182-t83,186,192-193

tabelas e índices, particionando, 1,84-186exportando, 203-2 10, 222-22 5exposiçâo à perda, 528importando, 203-206, 213-216, 222-225, 23O-232

movimento e manipulação de,4344origens, 206pesquisas,45-44recuperaçáo. Ver índicestarefas de fluxo,43-44tipos, tabelas, 100-106

Dados alfanumê.ricos, 43-44, 5l-52, 10 t-1O2,105-107,204-205

Dados binários, 103Dados de data, 37-38, 1o2, 276Dados em número decimal, lOO-1OIDados espaciais, 47-48, 104-106Dados inteiros, 100-101Dados monetários, 100-101Dados náo Unicode, 101-102Dados numéricos, 100-101, 360-361Dados relacionais, catálogos full text, 151-153Dados Unicode, l0l-102Data Collector, 433434Database Engine Tuning Advisor (DTA), 407412Database Mail, 62-65, 3OO-3O1, 370-37 4DATABASE_MIRRORING, 2 92DatabaselD, 359-360DatabaseName, 359-361DATETIME, 102DATETIME2, 102DATETIMEOFFSET 102db_accessadmin, 307db_backupoper ator, 3OT

Page 650: Livro_SQL

db_datareader, SOT

db_datawfiter,3O7db_ddladmin,307db_denydatareade\ 3O7

db_denydatawriter, 3OT

db_owner, 85-86, 3O7 , 311db_securityadmin, 307DBCC CHECKALLOC, 90DBCC CHECKCATALOG, 90DBCC CHECKDB, 90DBCC CHECKIDENT, 1 06-1 07DBCC CHECKTÁ.BLE, 90dbcreator, 85-86, 3osdbo.sysmail-log, 371DCM (Differential Change Map), 243--245DDL (linguagem de definiçáo de dados), 82-83,221-222, 324-325, 530-532

DECTMAL (B S), 100Declarative Management Framework. Ver Gereîcia-mento baseado em diretiva

Decompositores de palavra, l5l-155, 165-166DEFAULX, 7 6-7 7, t5 t-153Defesa profunda, 291DELETE, 1 10-1 1 1, 114, 132-133, 266-267DENY 311-312Desativando, índices, 741-142Descriptografia , 247-248, 375-317, 331-335, 451.Ver também Criptografia

Desempenho. Ver também Desempenho, monito-rando; Desempenho, otimizando; Desempenho deconsulta

backups,241-242ediçöes do SQL Server 2008,4748espelhamento de banco de dados, 493495índices

arquiteftra, L23-128catálogos full text, l5l-153cenário de caso, gerenciamento de dados,144-147

cenário de caso, indexaçáo full text, 171-172colunas incluídas, 132-133consultando dados full text, 158-161controle de alteração, full text, 153-155criaçáo de índice online, 134-135estatísticas de distribuição, 132-134filtros,133-134idioma, decompositores de palavra e identifica-dores de niz de palavra, 154-155

índices clusteri zados, 129-132índices de cobertura, 132-133índices espaciais, 735-738índices full text, 757-154,165-167índices não clusterizados, 131-132índices XML, 135-136manutençáo de, 131-133, 140-742opções, 133-135

prâtica, consultas full text, 167-163prâtica, criando, 138-139, 155-157pútica, gerenciando índices full text,167-169prâtica, mantendo, 1 42- | 43projetando în.dices, 729

mensagens dealerta,62modelo de recuperaçáo Registro em massa, 82-83opções automáticas; 83-86parametrizaçáo, 86-87parâmetro, estabelecendo, 364--368ponteiros de encaminhamento, 150replicaçâo, 565-566subsistema de disco, 7 5-7 6

tabelas,100Desempenho, monitorando. ver também Desempe-

nho; Desempenho, otimizando; Desempenho de

consultacenário de caso, projetando estratégia de automa-

ção,402-404contadores de desempenho, 350-351correlacionando desempenho e monitorando da-dos,362-363,367--369

falhas de banco de dados, diagnosticando, 370-374 :

falhas de hardware, diagnosticando ,3go-3glfalhas de serviço, diagnosticando ,378-386logs de còntador, 348-350obstrução e deadlock, 394-õ98prâtica

criando alertas de flalha,374-377criando log de contador, 351-353criando rastreamentos, 3 63-369deadlocks, soluçáo de problemas, 398-400erros de inicializaçáo de serviço, soluçåo deproblemas, 386-388

problemas de espaço, 372-374Replication Monitor, 57O-57 1

Server Profilercolunas de dados, selecionando, 359-361eventos de rastreamento, especificando, 357-360

flltros,360-362rastreamentos, definindo, 354-357rastreamentos, gerenciando, 361_363visáo geral, 354

views de gerenciamento dinâmicas (DMVS), 425-431

vtsão geral,346visáo geral, System Monitor, 347-348

Desempenho, otimizando. Ver também Desempe-

nho; Desempenho, monitorando; Desempenho de

consultacenário de caso, projetando uma estratégia de au-tomaçáo,441443 :

Database Engine TuningAdvisor (DTA), 407411Performance Data Warehous e, 433434

índice 649

Page 651: Livro_SQL

6s0

prâticaanalisando carga de trabalho decoîsalta,4l2Performance Data Warehouse, confïgurando,435438

Resource Governor, implementando, 416423Resource Governor, 41 4423views de gerenciamento dinâmicas (DMVS), 425-431

Desempenho de consulta. Ver também Consultascaches de consulta, 84-87,427-429estatísticas de distribuiçáo, 132-134índices, 132-133, 135-136

catálogos full text, 151-753cenário de caso, indexaçáo full text, 171-172controle de alteraçáo, full text, 153-155dados tull text,158-767gerenciando índices full text, 765-167idioma, decompositores de palawa e identifica-dores de raiz de palavra, 154-155

índices tull text, l5t-754,166.-167prâtica, criando índices full text,755-157prâtica, gerenciando índices full text, 167-169

índices XML, 135-136planos de consult4 84-87prâtica, consultas full text, 161-163

Desfragmentaçã.o, 133-135, 140-142, 426-427Diacríticos,166Diferenciação de acentos, 51-52, 87-88, l5l-153Diferenciaçáo de karla, 57-52Diferenciaçáo de letras maiúsculas e minúsculas,51-52,87-88,204

Differential Change Map (DCM), 243-245Diretório M5C5,452453DISABLED, endpoints, 293Discos

configuração de cluster, 451-453, 46947 1

espaço, 37, 75-78estatísticas de subsistema, 425, 428430falhas, diagnosticando, 390

Disk Queue Length, 350-351diskadmin,305Disponibilidade. VerEspelhamento de banco de da-dos; Cluster de failover; Log shipping; Replicaçáo

Dispositivos, requisitos de hardware, 37 -38distrib.exe, 556-557Distribuidor, replicaçáo, 553-555Disffibution Ageît, 55 6-558, 564-567DMFs (funçöes de gerenciamento dinâmicas),425432

DMK (chaves mestras de banco de dados), 246-248,315-317,320-321

DML (linguagem de manipulação de dados), 82-83,220

DMVS (views de gerenciamento dinâmicos), 425-432Download de arquivos, 4344.Ver também SQL Ser-

ver Integration Services (SSIS)

índice

DTA (Database Engine Tuning Advisor), 407-412dta.exe, 408

E

EKM (Extensible Key Management), 335EMERGENCY, 85-86, 257 -260Encadeamentos de posse, 314-315, 317, 320-323Encaminhamento de mensagem, 295-296Encaminhando mensagens, endpoints, 295-296Endereços lR 454, 469-47 1

Endpointsespelhamento de banco de dados, 492-494,506-507

objetos, copiando, 530-532prâtica, estabelecendo endpoints de espelhamen-to de banco de dados, 498-501

TCP,292-297EndTime,360-361Entradal saída (VO), 7 5-T 6, 17 7, 428-430Enumeraçáo, 54Enviando meîsagens, 43-44errorlog,370Erros. Ver também Códigos de eno; sQL Server Pro-filer

diagnosticando, 354de ativaçáo de dispositivo, 383-386falhas de banco de dados, diagnosticando, 570-374

importaçáo/exportaçáo de dados, 2o3, 206nível de gravtdade,282

Erros de falta de espaço,373-374Erros de mídia, restauraçâo, 258-260Espelhamento de banco de dados

argumentos comuns, 294-296cenário de caso, plano para alta disponibilidade,515-579

edições do SQL Server 2008,47-48endpoints, 492-494, 498-501, 506-50Tfailback, projetando, 51o-Sl2FILESTREAM, IO7_IO8inicializando, 502-505log shipping, 522-523modelo de recuperaçáo, 5O3-5O4modos de operaçáo, 493497páginas corrompidas, 90, 245-2,46prâtica

configurando, 505-508estabelecendo endpoints, 498-501failover, 512-513

redirecionamento de cliente, 496-498roles (papéis), 490-492sessões de failover, projetando, 509-510snapshots, 497-498threading, 497-498uso de cache, 496497

Page 652: Livro_SQL

Espera de siîal, 429-430Esquema sys,425Esquemas

dadosxML,103esquema sys,425EVENTDATA ( ), 325permissões, 311-313replicação, 557-558tabelas, criando, 99

Esfados operacionais temporários, 491Estatísticas

consultas, 427-429opções automáticas, 85-86, 426427Replication Monitor, 570-57 1

Showplan Statistics Profile, 358-359subsistema de disco, 425,428-430views de gerenciamento dinâmicas, 426-427

Estatísticas de acesso, 426-427Estatísticas de distribuiçáo, 132-734E statísticas de utilização, 42 6-42 7Estouro, tgmpdb,78-79EVENTDATA ( ), 325Eventos

alertas e, 282-284Analysis Services, 356-357de rastreamento

aplicando filtlos, 3 60-3 62colunas de dados, 359-361especitÌcando, 3 57 -3 60gerenciando, 361-363gerenciando grupos de eventos, 361-363

planos de notifrcaçáo, 227-222Execução, estatísticas de consulta, 427429Executando filas, 42943 1

EXECUTE AS, 315, 359-361Exploraçáo de dados, 4546,4849Exportando dados, 43-44, 203-2 lO, 222-225. Vertambém SQL Server Integration Services (SSIS)

Extensible Key Management (EKM), 355Extensible Markup Language. Ver XML (ExtensibleMarkup Language)

Extensões de arquivo, 7 4-T 7External Key Management, 300-301Extraçáo de termo, 48-49Extraçáo detexta,4344Extrações,48-49

prática, espelhamento de banco de dados,512-513prâtica, failover de log shipping, 542

Fazendo novo mapeamento de usuários, 5õ 1

Fazendo upload de arquivos, 43-44.VertambémSQL Server Integration Services (SSß)

Fechamento, estatísticas sobre, 426-427Ferramentas de cLiente, 356-357Filas,429431

assinante de atualização enfileirada, 567-569contadores de desempenho, 350-351Queue Reader AgerLt, 556-557, 567-569

Filas de espera,42943lFilas executáveis, 42943 1

File Transfer Protocol (FTP), 4344.Uer também SQL

Server Integration Services (SSIS)

FILEGROUB 151

FILENAME,77-78FILESTREAM, 10ó-108

compactaçáo, 109-1 10

confrgarando, TT-78índices tull æxr, 157-753nível de acesso a filestream, 300-301snapshots de banco de dados, 264-2,68Window Server 2008 Server Core, 37-38

FILLFACTOR, 133-1 3 5, 1 40-1 41Filtro de junçáo, 553-554Filtro de linha, 553-554Filtro de linha dinâmico,553-554Filtro de linha estático, 553-554Filtros

eventos de rastreamento, 360-362lndices, 133-134, 151-154replicaçáo, 552-554TCP eîdpoints,292

Filtros de palavra de ruído, 166Firewalls, TcP endpoints, 292-296FLOAT (N), 100-101, 106-107Fluxode controle,275Fluxos de iob operacionais,43-44Fluxos de trabalho, operacionais, 4344fn_tracegeteve ntiîfo, 3 6 I -3 62fn_tracegetfi lt erinlo, 3 6 I -3 62ftr_tracegetinfo, 36 l-3 62fn _t ace Settable, 3 6 1 --3 62, 43 4FORPATH, 135-136FOR PROPERTY, 135-136FOR VALUE, 135-136, 175-17 6Formas de palavra, pesquisando, 159-161FORJ\4SOE, t60-t6tFORMSOF THESAURUS, 165-166Fragmentaçáo, 133-135, 140-142, 426-427FREETEXï, 158-160, 165-166FREETEXTTABLE, 1 58_1 59, 1 65_166FTDATA, 165_166FTP (File Ttansfer Protocol), 4344. Ver também SQLServer Integration Services (SSIS)

índice 651

F

Facetas, 219-220Failback, 5 lO-5 12, 522-525, 540-541Failover. Vertambém Espelhamento debanco de

dadosforçado, 511-512log shipping, 522-525, 539-541normal, 5lO-512

Page 653: Livro_SQL

652

FULL, 167Funções de gerenciamento dinâmicas (DMFs),425432

G

Geográficos, índices espaciais, 104-106, 135-138Geométricos, índices espaciais, 104-106, 135-138GeometryCollection, 1 05-1 06cerações, replicaçáo por merge, 579Gerenciamento baseado em diretiva

alvo de diretiva, 220categorias, diretivas, 221-222cenário de caso, projetando lma estratégia,233-235

Central Management Server, 222-224condições,22Odiretivas, visåo geral, 221-222diretivas de importação e exportaçáo, 222-225edições do SQL Server 2008,47-48facetas, 279-220obediência, diretivas, 221-224prática, definindo diretivas, 224-232triggers deDDL,325visáo geral, 217-219

Gerenciamento de espaço. Ver também Considera-

ções sobre tamanhoalgoritmos de verificaçáo de espaço, 84-85erros de falta de espaço,373-374gerenciamento de backup, 244-247opções AUTO, 84-85problemas de espaço em banco de dados, 372-374views de gerenciamento dinâmicas (DMVS), 425

GRANT, 311-312GRANT/REVOKE, 492GROUP BY 373-374Grupos de eventos, 325Grupo de eventos CLR,357-358Grupo de eventos de banco de dados, 357-358Grupo de eventos Deprecation, 357--358Grupo de eventos Errors and Wamings, 357--358crupo de eventos Full Text, 357-358Grupo de eventos OLEDB, 357-358Grupo de eventos Performance, 357-359Grupo de eventos ScarLs,357--358Grupo de eventos Seffer,357-358Grupo de eventos Transactions, 358-359Grupo de eventos TSQL,358-359Grupo de eventos User Configurable,358-359

HHardware. Ver também Cluster de failover

cluste r compatível, 448falhas, diagnosticando, 37 O-37 1, 390-39 I

índice

requisitos, 37-41,4Ø7views de gerenciamento dinâmicas (DMVS), 425,429431

Heap, 130Hierarquia, contadores, 347-348Hierarquia, criptografia, 375-317HIERARQULAID, 105-106Histogramas, 132-134Histórico, jobs, 27 5-27 6HostName, 359-361HTML (Hypertext Markup Language), 151-153

I

VO (eîtradal saída), 7 5-T 6, 17 7, 428-430ID de processo do Windows, 370-371IDE (Integrated Development Environment), 451Identificador de segurança (SID), 303-30ó, 530Identificadores de ruiz de palavra, 15 1-155, 158IDENTITg 1O6-LO7

IdiomasCoLLATE, 105-107índices full text, 151-155sequências de collation, 51-52, 87-88

IGNORE-DUP-KEY, 13 4-1 3 5Import/Export Wizard, 48-49, 206Importando dados, 43-44. Ver também SOL ServerIntegration Services (SSIS)

arquivos de rastreamento, 367-368Bulk Copy Program (BCP), 203-206BULK INSERT 205-206cenário de caso, 213-276diretivas, 222-225, 230-232prâtica, importando diretivas, 230-232

IN PATH, 151

INCLUDE, 132.133INCREMENTAL, 167

Indexaçáo full textcatálogos full text, 151-153cenário de caso, indexaçáo full text; 171-172cluster de failover, 47 2

criando, 151-154gerenciando, 165-167prâtica, consultas fulI text, 16l-163prâtica, gerenciando índices full text, 167-169preenchendo, 166-167snapshots de banco de dados, 265-266

índicesafquitetura, 123-128catâlogos full text, 151-153cenário de caso

gerenciamento de dados, 144-147indexaçåo full text, 171-172

cluster de failov er, 47 2

colunas incluídas, 132-733

Page 654: Livro_SQL

consultando dados full text, 158-161controle de alteraçáo, full text, 153-155criaçáo de índice online, 134-135espaço na tabela de job, 373--374estatísticas em, 132-734, 426427f].ll'j.os,133-134gerenciando índices full text, 165-167idioma, decompositores de palavra e identificado-res de raiz de palawa, 154-155

índices clusterizados, 7 29- 132

índices de cobertura, 132*133índices full text, 151-754índices náo clusterizados, 131-132índices XML, 135-136manutençáo de, l3l-133, 140-142manutençåo de backup, 245-247opções,1õ3-135opções automáticas, 84-85particionando, 184-186

cenário de caso, 795-199criando funçóes de partição, 175-179esquemas de partiçáo, criando, 180-183gerenciando partições, 188-192prâtica, particionando, 17 8-1v9, 182-183,186,192-193

prâricaavaliando índices ausentes, 43H32consultas full text, 16l-163criando índices, 138-139criando índices fuIl tgxt, 155-757gerenciando índices full text, 767-169mantendo, 142-143

preenchendo índices fulI text, 166-767projetando,729tempdb,78-79views de gerenciamento dinâmicas (DMV-S), 425

Índices de cobertura, 132-733índices espaciais, 135-138índices náo clusterizados, 131-132Índices online, 134-735índices XML, 135-136INFLECTIONAL, 160-161Infusáo de mosaicos, 135-138Inicializaçáo, 53-55, 370-37 1, 378-386rNrTÆ{orNT, 241-242INSERT 108-1 1 1, 114, 132-133,2O3,266-267TNSERT rNTO. . .WITH (TABLLOCK), 108-110Instalaçáo, 385-386Instalando

contas de serviço, 51-52instância chtsteizada, 47 3-480instâncias, 51-60mecanismo de banco de dados, Sl-52requisitos de hardware, 37 -38Server Agent, 5 1-52

Instânciasauditoria, 324-329cþrste4469472instalando e configurando, 51-55, 370-37 Ipadronizando. Ver Gerenciamento baseado em

diretivaPerformance Data warehouse, 433434prâtica, instalando, 55-60sequências de collation, 51-52

rNT 100

Integrated Development Environment (IDE), 45 1

Integration Services, 27 4-27 5Integridade, mantendo, 89-92. Ver também valida-

çáoIntegridade de banco de dados, 89-92Interface de programaçáo de aplicativos (API),

303-305,314Interligação em rede TCP/IB 39,299-300Internet Explorer, requisitos, 59Invasáo, impedindo, 293-294,492. uer tambémSegurança

Iostall,42M3o

tfob de execuçáo, 27 4-27 5, 282

Jobsagendas,275automatizando análise com, 408cenário de caso, 286-289criando, 274-276etapas,274-275histórico, 275-276log shipping, 528-530opeftdores,276prâtica, criando jobs e operadores, 277-280

IOrN, 110-1 11

KKerberos, 294-296, 451KEY INDEX, 153_154Key Performance Indicators (KPl), 4546

índice 653

L

LANGUAGE, 153_154,158Latitude, dados espaciais, 104-106Jdf, arquivos 7+-77L\KE,360-361Linestring, 105-106Linguagem de definiçáo de dados (DDL), 82-83,221-222, 324-325, 530-532

Linguagem de manipulaçáo de dados (DML), 82-83,220

Page 655: Livro_SQL

654

Linhas. Ver também Tabelasbloqueando, 394-395compactação, 108-1 10conflitos de dados, 559fïltro de linha, 553-554validaçáo de replicação, 571-572

Linhas, dados espaciais, 104-106Listas de palawas de parada, 153-154,166,168-169

LISTENER_rB 293-294LISTENER_PORT 293-294Lock Manager, 394195Log de System Evetr'l',370-374Log de transaçá o . Ver também Replicação transacional

arquivos e grupos de arquivos, TS-79backups, 242-244,25O,253-254 :

controle de acesso, 85-8óencadeamenf o de log, 242-2 43espelhamento de banco de dados, 491,493496opções de recuperaçáo, 81-84piáttica, backups, 250problemas de espaço em banco de dados, 372-374restaurando, 252-254, 256-258, 261-262snapshots de banco de dados, 266167visäo geral, 76-78, 252-254

Log File Viewer, 371Log Reader Agent,556-557, 564-567Log Sequence Number (LSN), 242-243, 252-254,257-258,564-566

Log shippingcenários de caso, 545-549cenários para,522-523componentes, 523-524failback, 540-541failoveç 496-497, 539-542inicializando, 527-532prâtica, configurando, 532-53 6prâtica, failover" 542tipos de, 525

Log Windows Application Event, 83-84,282erros de ativaçáo de dispositivo, 383-386falha de disco, diagnosticando, 390falhas de serviço, diagnosticando, 380-381, 383problemas de espaço em banco de dados, 372-374

Log Windows Eveît, 37 O-37 4Log Windows System Event, 390Login do Windows, 303-305Login padrão do SQL Server, 303-305LoginName, 359-367Logins,293

área de superffcie configuração, 299-3OOespelhamento de banco de dados, 5O4-5O5eventos de rastreamento, 359-361failover, migrando, 509-510

índice

falhas de banco de dados, diagnosticando ,370-ST4log shipping, 530-532prâtica, criando, 308-309principais, 3O3-3O5Resource Governor, 41H15tempo limite, 556-557triggers de DDL, 324-325usuários de banco de dados, 306

Logins de grupo do Windows, 303-ã05LoginSID, 359--361logread.exe, 556-557Logs

alerfas,375-377arquivos de rastreamento, 356-357arquivos e grupos de arqrivos, TS-79compactação, 47-48falhas de banco de dados, diagnosticando, sT}-374

jobs,274-275logs de contador,348-350 l

prâtica, criando log de contador, 351-353problemas de espaço, 372-374transações minimamente regisffadas, 560-561trilha de aaditafja,325

Logs de Application Event, 370-374 i :

Logs de errofalha de disco, diagnosticando, 390falhas de banco de dados, diagnosticando, sTO-374

falhas de serviço, diagnosticando, 380-381pâginas corrompidas, backup, 245-246páginas danificadas, 83-84parâmetros, 384-386

Logs de evenro, 83-84, 370-374Logs de Security Event, 370-374Longitude, dados espaciais, 104-106LSN (Log Sequence Number), 242-243,252-254,257-258,564-566

MManage Schedules, 275Mandate,221-222Mantissa, 101

Manutençáobackups, 245-247índices, 131-133, l4O-142log shipping e, 529-530prâtica, mantendo índices, 142-143

Marca d'âgta de replicação, 564-566MARK,257-258MARS (Multiple Acrive Resulr Sets), 373-374MAX,102-103MDz,332

Page 656: Livro_SQL

MD4,332MD',332MDAC (Microsoft Data Access Components), 39.mdf, arquivos 74-77Mecanismo de banco de dados, 4647,51-52Melhores práticas

,{PIs de aplicativo, 31 4

arquivos de rastreamento, 356-357, 362-363avtenticaçâo,294automatizando análise, 408clrtstgr, 452-453conexões de rede pivada, 453criptografia, 295-296deadlocks, lidando, 398equilibrando segurança e capacidade de gerencia-menÍo,477

erros de falta de espaço,373-374failback de uma reserva, 541

índices, determinando qual uiar, 427intervalos de backup, 536log shipping, 528-529logs de contador, 349Microsoft Distributed TTansaction coordinator(MS DTC), 46ó

modelos de recuperaçáo, 82-83modo de operaçáo Alta Segurançai 49H97números d.e porta, 294registrando etapas de trabalho, 27 5

retornando, 510-51 Iserviço SQL Btowser, 470serviços do SQI. Server, gerenciando, ã78validaçáo de replicaçáo, 571-572veriftcaçáo de página, 89

Memóriabuffers, 7 +-T 6, 252-254edições do SQL Server 2008,4æ7falhas de hardware, diagnosticando, 391

opções automáticas, 8rt-85requisitos, 37Resource Governor e, 414-47 6tabelas,100

Meîsagens,4344configurando o Database Mail,62-64falhas de banco de dados, diagnosticando,370-374fltlas,63-64prâtica

Database Mail, configurando, 63-65MERGE, 1 10-1 1 1, 188, 192-193, 266-267Merge Agent, 556-557Microsoft Data Access Components (MDAC), 39Microsoft Distributed Ïlansaction coordinator(MS DTC), 452-453,466

Microsoft Internet Explorer, requisitos, 39

Microsoft Mensagem Queue (MSMQ), 4344. Ver

também SQL server Integration services (SSIS)

Microsoft Offic e lntegration, AugMicrosoft windows, versóes slrportadas, 37-38Migrando, log shipping, 522-523Migrando logins, 509-510MIRROR TO, 241-242Modelo de recuperação completo, 82-83,503-504

Modelo de recuperaçáo Registro em massa, 82-83,503-504,560-561

Modelo de recuperação Simples, 82-84, 5O3-5O4,

560-561,565-567Modelos, rastreamentos do Profiler, 355-356Modo de operação Alta Disponibilidade,493496Modo de operaçáo Alta Segurança, 495497Modo de operaçáo AIto Desempenho, 495-496,5tt-512

MONET 100-101Monitorando o SQL Server

cenário de caso, projetando estratégia de automa-

çãto,4O2-4O4contadores de desempenho ,350-351correlacionando desempenho e monitorandodados, 362-363, 367-369

falhas de banco de dados, diagnosticando,370-374falhas de hardware, diagnosticando, 390-391falhas de serviço, diagnosticando, 378-386logs de contador, 348-350obstruçáo e deadlock, 394-398prática

criando alertas de falha,374-377criando log de contador, 351-353criando rastreamentos, 363-3 69deadlocks, soluçáo de problemas, 598-4ooerros de inicializaçâo de serviço, soluçáo deproblemas, 386-388

problemas de espaço, 372-374Replication Moîitor, 570-57 IServer Profiler

colunas de dados, selecionando, 359-361eventos de rastreamento, especificando, 357-360

filtros,360-362rastreamentos, definindo, 354-357rastreamentos, gerenciando, 361-363visâo geral,354

views de gerenciamento dinâmicas (DMVS), 425-431

vtsâo genl,346visáo geral, System Monitor, 347-348

MS DTc (Microsoft Distributed TTansaction

coordinator), 452-453, 466Mslogreader_history, 5 64-5 66

índice 655

Page 657: Livro_SQL

656

Msmerge_contents, 57 7-57 9

MSmergegenhistory, 57 8-5 7 IMsmerge_tomb staîe, 57 7-57 9MSMO (Microsoft Mensagem Qveve), 4344MSrepl_commands, 564MSrepl transactions, 564mssqlsystemresource, 385-386MUTJTI-USER, 85_86Multilinestring, 105-106Múltiplas instâncias, 47-48, 469. Ver tambémInstâncias

Multiple Active Result Sets (MARS), sT3-374MulriPoinr, 105-106MultiPolygon, 105-106

NNamed pipes, 39NAS (Nefwork Attached Storage), 390NCHAR (rLl, 1O2

.ndf, arqnivos 74-77NEAR,161NECOTIATE, 294-296.NET Framework 2.0, 39.NET ftamework 3.5, 39Network A.ttached Storage (NAS), 390NIC (placa de interface derede),472Nlveis de isÒlamento de ffarLsaçâo, 395NO REVERT õ15NODE, 135-136Nomes, login, ã05-305Nomes de rede, 454, 469-471NORECOVERY, 25 5, 503-504NOT,115NOT FOR REPLICATION, 1O7_1O8NOT LIKE, 360-361Notificações, 282-2,84, 357-358Noti ficar opera dor, 282NOTNULL, 105-106, 113-114NTDomainName,359-361NTLM,294-296NTuserName, 359-361NULL, 105-109, 114, 175-176NUMERTC (B S), 100NVARCHAR (MAX), 1 10-1 1 1

NVARCHÁ,R (n), 102, 109-110

índice

objetosalertas de alteraçã,o, 62copiando, 530-532grupo de eventos, 357-358sistema, copiando, 504-505

Objetos binários grandes (BLOBs), 106-108Objetos de sistema, copiando, 504-505ODBC (Open Database Connectiviltt), 531OFFLINE, 85_86OLAP (Online A,nalytic ProcessirLÐ, 45-46, 48-49,132-133

OLE DB (Object Linking and Embedding Database),206,531

oN, 184-185ON

-FAILURE, 326

On change, log only, 221-222On change, prevent, 227-222On Demand, 221-222On schedule, 221-222oNLINE, 85-86,257-258ONLINE = ON, 134-135Online Analwical Processing (OLAP), 4546, 4H9,132-133

Online Transaction Processing (OLAP), 4546,48-49,132-133

Opçáo de assinante de analizaçâo imediata,566-568

Opções AUTo, 83-86Open Database Connectivity (ODBC), 531OPEN MASTER KEY, 3 1 5_3 1 7

OPENROWSET/OPENDATASOURCE, 299_30 7

Operações com metadados, 190-192, 312-314,49H97,579

Operações degravaçãobackups,239Copy-On-Write, 2 65-267espaço no banco de dados e, 372-374estatísticas de consulta, 427-429incompletas, 245-2,46índices, 131-135integridade, mantendo, 89-90

Operações de leiturabackttps,239bloqueando, 394-395Copy-On-Write, 2 6 5-267estatísticas de consulta, 427-429índices, 133-135níveis de isolamento, 395

Operações onliîe, 47 -48Operações paralelas, 4Ø7Operadores, jobs, 27 6-280Operadores de spool, espaço na tabela de trabalho,373-374

oObject Linking and Embedding (OLE),299-3OtObject Linking and Embedding Database (OLE DB),206,531

ObjectName, 360-361

Page 658: Livro_SQL

oR,115,361-362Ordenando

índices clusteri zados, 729-132opções de índice, 133-135sequências de collation, 51-52, 87-88tempdb,78-79

oRDER BY 373-374Otimizando, 355-356, 40941 IOutput Sueue Length, 350-351Ownership chains, 314-3 1 5, 317, 320-323

P

PAD-INDEX, 133_135Padrão x.547,333-334Padrões, facetas, 219-220PAGE-VERIFY, 89PAGE-VERIFY CHECKSUM, 83_84Páginas

bloqueando, 394-395B-trees, 124-125cálculos de tamanho, 125-128compactaçáo, 108-1 10, 1 1ã

corrompidas, 245-246, 257-259daniflcadas, recuperaçáo, 81-84divisões, 126-127, 731-135integridade, mantendo, 89-90níveis de Îndice, 125-728opções de îîdice, 133-135ordenando, 129-132particionando e, 189-792verificaçäo, 89-90

Páginas corrompidas, 89, 245-246, 257-259. Vertambém Validaçáo

Páginas em nível Íolha, 124-125, 133-135. VertambémPages

Páginas raiz, 124-125, 733-135. Ver também Pá-ginas

Páginas rasgadas, 89-90. Ver também PâginasParametnzação, 86-87Parâmetro e,384-386Parâmetro l,384-386Parâmetro T,384-386Parâmetros, inicialização, 383-386Parâmetros d,384-386Particionando

cenário de caso, 795-199comparativos, 77-78Database Engine TuningAnalysis (DTA), 410edições do SQL Server 2OO8,4647esquemas de partiçáo, criando, 180-185funções de partiçáo, criando, 175-179gerenciando partições, 188-792

prâtica, particionando, 1 7 8- 1 7 9, I 82-l 83, I 86,192-193

tabelas, compactaçáo de, 109-110tabelas e índices, 784-186

PARTNER, 295_296Pasta de tnicialização, alterando, 386-387Pasta de snapshots, 557-558PATH, 1ã5-136PATHXML, 135_136Pedidos pendentes, 429-430Perfi s, Databas e Mail, 62-64PerfMon. Ver System MonitorPerformance Data Warehous e, 433438Performance Studio, 433-434Permissáo CONNECT 293Permissóes

agentes de replicação, 573-574cluster de failover, 47M71CREATE SCHEMA, 99erros de ativação de dispositivo, 383-386falhas de serviço, diagnosticando, 387-'383funções e, 308gerenciando, 311-317prâtica, gerenciando, 3 I 8-323

PERSISTED, 108-109, 185Personificaçáo, 315Pesquisa fu 11 text, 46-47Pesqrisas,4344Pesquisas de sinônimo, 160-167Pilha de chamada, 314-315Ping, 453,471, 494-495Placa de interface de rede (NIC), 472Plataformas, migrando, 522-523Polígonos, dados espaciais, 104-106Ponteiros de encaminhameîto, 130-732, 189-190Pontos, dados espaciais, 704-106Pontos de limite. Ver também Endpoints

eventos de rastreamento, 360-361partições, 175-176, 188

Pools de recurso padráo, 414-415PorÍas, 292-294, 492Prâtica

alertas, criando , 283-284, 374-377área de superficie, conftgurando, 3ol-3o2backup debanco de dados, 249-250bancos de dados, criando,78-79clusters, criando, 456-466constraints, implementando, 1 l5-1 l6criptografando dados, 33 5-339Database Mail, configuraîdo, 63-65deadlocks, solução de problemas, 3984oodiretivas, definindo e veriftcando a obediência,224-232

índice 657

Page 659: Livro_SQL

658 índice

endpoints, inspecionando, 296-297erros de inicializaçáo de serviço, soluçáo de pro-blemas,386-388

especificaçåo de auditoria, criando, 328-329espelhamento de banco de dados, 498-501,5o5-508

exportando dados, 207 -2 I ofailover, 473480, 512-513índices, 138-139, 742-143, 155-157, 16l-163,167-169

índices ausentes, avaliando, 430-432integridade de banco de dados, verificando,9l-92

iobs e operadores, criando, 277-280log de contado¡, criando, 351-353log shipping, 532-536, 542logins e usuários de banco de dados, criando,308-309

modelo de recuperaçáo de banco de dados, alte-rando, 87-88

particionando, 182-183, 186Performance Data Warehouse, configurando,435-438

permissões, gerenciando, 318-323fastreamentos, criando, 363-369replicaçåo, configurando a publicaçáo, 561-563replicaçáo por merge, implementando, 580-582replicaçáo transacional, implementando, 572-57 5

Resonrce Governor, implementando, 4lØ23restaurando um banco de dados, 259-262SPLIT MERGE e SWITCH, 192-193tabelas, criando, 111-112verifique os requisitos mínimos, 39-41

Precedência, coîstnaints, 43-44PRIMARY, 7 5-7 6, 257-258Principal, 3o3-3o9Principal roles, espelhamento de banco de dados, 491

Problema do cérebro dividido, 494-495Problemas de deadlock, resolvendo, 394400Problemas de disputa, diagnosticando, 425431Problemas de espaço em banco de dados, 372-374Problemas de obstruçáo, resolvendo, 394-398Procedimentos armazenados (stored procedures)

edições do SQL Server 2008,47-48eventos de rastreamento, gerenciando, 361_363grupo de eventos, 358-359replicação por merge, 580replicaçáo transacional, validaçåo, 570-572segurança, 314-315XPs do SQL Mail, õ00-301

processadmin, 305Processadores

falhas de banco de dados, diagnosticando, '

370-371falhas de hardware, diagnosticando, 39 1

precisáo numérica e, 101

requisitos, 57Resonrce Governor e, 47H76

Processor Queue Length, 350-351Processos, obstruindo, 396-397Progress Repoft, grupo de eventos, 357-358Projetista de pacote, 48-49Projetista de relatírio, 44-45PROPERTY, 135_136Propriedades, facetas, 22O

Protocolos de comunicaçáoSQL Server configuration Manager, 54TCP endpoints, 292-296thread de comunicaçáo global, 497498

Proximidade, pesquisa, 159-161Proximidade de palavra, pesquisando, 159-161Publicador, replicaçáo

agentes, 555-557conflitos de dados, 559-561métodos de replicaçáo, 557-559prâtica, configurando publicaçáo, 561-563replicaçáo por merge, 577-580replicaçáo transacional

arquitetura, 568-571controle de alteraçáo, 564-567opçôes, 566-5ó9validaçáo, 570-572

topologia, 554-555visáo geral, 553-555

Público, rcle,3oT

aqrdrsvc.exe, 556-557Quadro de seleçáo, 137-138

Quarentena, páginas corrompidas, 245'246Query Activity, 43H34Query Optimizer, 84-85. Ver também DatabaseEngine Tuning Advisor (DTÐqueryout,2o4

OUEUE-DELAY 326

Quórum local,45O457

R

RAISERROR,571RANGE LEFT, 175-176RANGE RrGHï, 175-176RANK,1ó1Rastreamentos

deftnindo, 354=357eventos, selecionando, 357-361falhas de banco de dados, diagnosticando,370-371

fl,tros,360-362gerenciando, 361-õ63

RC4,294-296

Page 660: Livro_SQL

READ COMMITTED,595READ SERIALIZI\BLE, 39 6-39 7READ UNCOMMITTED, 395READ-ONLY, 85-86READ-WRITE, 85-86READ_WRITE-FILEGROUPS, 2 44-246REAL, 100-101, tO6-107REBUILD, I4I_142Recebendo meîs agens, 43 -44RECOVERY 255Recuperaçåo, Ver também Backups

logs de transação, 76-77modelos de, 81-84, 5O3-5O4, 560-561opçóes, configurando, 81-84prâtica, alterando o modelo de recuperação,87-88

Recuperaçáo de reinicializaç âo, 7 6-7 7, 253, 47 2Recufsos

cluster, 449, 453-454disputa, diagnosticando, 425431mssqlsystemresource, 385-ã86pools de recurso, 47M17,423Resource Governor, 47-48, 414-423

Redes internas, cluste! 452453Redes privadas, melhores práticas, 453Redes públicas, cluster, 452-453Redirecionamento de cliente, 496498REDO,253Relaçáo instância-disco, 470Relatório de expansáo, 48-49Relatórios

Construtor de rclatôrio, 4849grupo de eventos Progress [teport, 557-358log shipping, 522-523SSRS (SQL Server Reporting Services), 44-45,4849

Relatórios de depuraçáo, 4Hí.Ver também Solu-çáo de problemas

REORGANIZE, 141_142REPEATABLE RE AD, 39 6_3 9 7REPLACE,255Replicação

agentes, 555-557, 559cenário de caso, planejando palø alta disponibili-dade, 585-590

componentes, 552-554conflitos de dados, 559-561edições do SOL Server 2008,4748 :

failover, 496-497tunções, 553-555jobs,274-275melooos. Þbt-bõgobjetos, copiando, 530-532práttica

configurando publicação, 567-563replicaçáo por merge, implementando, 580-582

replicaçáo transacional, implementando, 57 2-575

replicaçáo por merge, 556-559, 57 7-582replicaçáo transacional

agentes, 556-557arquitetura, 568-571controle de alteração, 564-567monitorando, 570-571opções, 566-569prâtica, implementando , 572-575 :

transações minimamente registradas, 560-561validação, 570-572visáo geral, 558, 564

topologia, 554-556visão geral, 552

Replicaçáo de snapshots, 556-558Replicaçáo ponto a ponto, 568-570Replicaçáo por merge, 47-48, 556-559, 577-581-582

Replicaçáo transacionalagentes de replicação, 556-557arquitetura, 568-571controle de alteraçáo, 564-567edições do SQL Server 2008,47-48monitorando, 570-571opções, 566-569prâtica, implementando , 572-575transações minimamente registradas, 560-561validaçáo, 570-572visáo geral, 558,564

Replication Monito4 570-57 1, 57 4-57 5replmerg.exe, 556-557Requisitos

hardware, ST-38prâtica,39-4"tsoftware, ST-39

Restauraçáobackups completos, 254-2,57backups diferenciais, 256-258backups emfaixas,247erros de mídia,258-260espelhamento de banco de dados, 505-505log de transaçáo, 252--254, 256-258log shipping, 528-530, 539-541páginas corrompidas, 257-259prâtica, restaurando database, 259-262restauraçóes onliîe, 257 -258snapshots de banco de dados, 264-268tabelas e índices particionados, 185

Restauraçáo de melhor esforço, 258-260Restauraçáo em ponto no tempo, 257-258.Restauraçáo parcial, 257-258. Ver também Restau-rcçâo

Restaurações online, 257-258RESTORE,255RESTORE DATABASE, 259_260

índice 6s9

Page 661: Livro_SQL

660

RESTORE LAG,259-260RESTORE MASTER KEY 315.317RESTRICTED-USER, 85-86Reversão de banco de dados, 266-268REVERT 315Revertendo dados, snapshots, 266-268REVOKE, 311-312Role de espelho (mirror), Espelhamento de banco de

dados, 491. Ver também Espelhamento de bancode dados

Role sysadmin, 85-86, 306,3llRoles

em nível de banco de dados versus em nível de

servidor,492espelhamento debanco de dados, 490-492fixos, 305, 307replicaçáo, 553-555usuário, 3O7-3OB

Roles debanco de dados frxos,3oTRoles de servidor, 3o5,492ROLLBACK, 86_87ROLLBACK TRANSACTION, 324Roteamento estâtico, 43-44Roles (papéis) de aplicativ o, 3o7Rotinas de tratamento de everLta, 43-44ROWGUTDCOL, 106-107RPC

complero, 359-360, 407 -4o IinicíaI, 3 5 9 -3 60, 40 7 40 I

RPC (chamadas de procedimento remotas),453

sSalgando um hashing, 333-334SAN (storage area nenvorþ, 39O,452-453,454Scripts Activex, 27 4-27 5scsviscsl, 451

securityadmin, 305Segurança

acesso, controlando, 85-87, 293, 531agentes de replicaçáo, 573-574área de superffcie, configurando, 299--302assinaturas, 317, 320-323auditoria, 325-329, 357-359backups, 239, 247-248cenário de caso, projetando, 342-343chaves mestras, 315-317clusters, 451,470-471conta de serviço, 51

criptografando dados, 337-339. Ver tambémCriptografia

Database Mail,62-64espelhamento de banco de dados, 492-494failover, migraçáo de login, 509-510falhas de serviço, diagnosticando, 37 8-386invasáo, impedindo, 293-294, 492

Índice

jobs,274logs de contador,349logs de Security Event,370-374melhores prâticas,477metadados, 312-314modos de avtefJi,ticação, 5 l-52objetos, copiando, 530-532permissões, gerenciando, 3o8, 31 l-323personificaçáo, 315prática

área de superffcie, configurando, 3o1-3O2assinaturas, adicionando, 320-323configurando área de superfrcie, 3o1-3o2criando uma especiftcaçáo de auditoria,328-329

criptografando dados, 33 5-339gerenciando permissões, 3 1 &-323inspecionando endpoints existentes, 296-297

principal, criando, 303-308procedimentos armazenados (stored procedures),

314-315rclatórios,4445roles fixos, 305,3O7TCP endpoints, 292-296triggers de DDL, 324-325usuários sem login, 306-307usuários de banco de dados, 306

SELECT, 85-86, 2O3, 265-266SELECT . .INTO,82-83, 560-561Seletividade, índices, 132-134Semana de trabalho padrão,276Senhas, 53-55, 3O3-3O5, 335-337, 378-386Server Agent. Uer SQL Server AgentServer Profiler. ver sQL Server Profilerserveradmin, 306ServerName, 360-361Service Broker, 4243, 292, 294-296Serviço SQL Browser, 47O

Serviços. Ver Sewice Broker; SoL Server AnaþisServices (SSAS); SQL Server Integration Services

(SSIS); SQL Server Reporting services (SSRS); Ser-

viços do SgL Server

Serviços do Browser, melhores práticas,47oserviços do sQL Server, 42-46,469472serviços do Windows, 378-386Servidor de relatôrios, 4445Servidor de reserva, 495496, 540-541Servidor de witness (testemunha), espelhamento de

banco de dados,49lServidor morlitor,524Servidores vinculados, 530-532SessionloginN ame, 359-367Sessões, grupo de eventos, 558-359SET IDENTITY-INSERT, 106_107setupadmin, 306sHA,332

Page 662: Livro_SQL

SHAI,332Shared memory requisitos, 39Showplan Statistics Profile,358-359 :

Showplan Text,358-359Showplan xML, 358-359SHUTDOWN, õ26SID (identifi cador de segurança), 303-306, 53oSimple Mail TTansfer Protocol (SMTÐr 62Sinais, arquivos de dicionário de sinônimos,165-166

Sinal de investigador, 570-571SINGLE-USER, 85_86Sistemas operacionais

cluste\ 451453tarefas, etapas de job' 274-275versões suportadas, 37 -3 I

Sistemas operacionais Windows de 32 bits, 37-38Sistemas operacionais Windows de 64 bits, 37-38,451

Sites para mais informaçõesCodePlex, diretivas, 222-224esquemas EVENTDATA ( ), 325grupos de eventos, 525informações sobre cluster do Windows, 448requisitos de instalação, 37 -38tipos de espera,43O43l

Small Computer System Interface/Internet SmallComputer System Interface (SCSViSCSI), 451

SMALLDATETIME, 102

SMALLINT 1OO

SMALLMONEI 100-101SMTP (Simple Mail TTansfer Protacol),62SNAPSHOT 396-397Snapshot Agent, 556-558snapshots. trac e _data, 434snapshots. trac e _info, 434Snapshots de banco de dados, 264-2,68,497-498

ediçóes do SqL Server 2OO8,4748espaço de aÍmazenamento, 3 7 3--37 4FILESTREAM, 1O7_1O8prática, criando, 26 7 -26 Irastreamentos, 454tempdb,78-79

soAE292Software antivírus, cluster e, 452453Soluçáo, conflito, 560Soluçáo de problemas

cenário de caso, projetando estratégia de automa-

ção,402404contadores de desempenho, 350-351correlacionando desempenho e monitorandodados, 3 62--3 63, 3 67 -3 69

eventos de rastreamentoaplicando frltros, 3 60-3 62definindo, 354-357especificando, 357-360

gerenciando, 361-363selecionando colunas de dados, 359-361

falhas de banco de dados, diagnosticando,370-374

falhas de hardware, diagnosticando, 390-391falhas de inicializaçáo de desktop remota,379-382falhas de serviço, diagnosticando, 37 8-386prâtica

criando alertas de falha,374--377criando rastreamentos, 363-369deadlocks, soluçáo de problemas, 398-400erros de inicializaçáo, soluçáo de problemas,386-388

problemas de obstruçåo e deadlock, 394-398rastreamentos do P rof|,er, 3 54Replication Mo nitor, 5 7 O-5 7 7

views de gerenciamento dinâmicas (DMVS), 425-431

Soma de verificação binâria, 57 1-57 2

Sondagemintervalos, 556-557System Monitot, 347-348

SORT-IN-TEMPDB, 133_ I 3 5

sp_article_valid aÍioî, 57 7-572sp_browsereplcmds, 57 0-5 7 1

sp_conftgure, 300-301SP_Counts, 355-356sp_publication_validation, 57 1-572sp_trace_create, 36 1-3 62sp_trace_generateevent, 3 6 l-3 62sp_trace_seteverLt, 3 6 1 -3 62sp_trace_setfÌlt er, 3 6 7-362sp_trace_setstaíts, 3 6 l-3 62

sp_validatemergepublication, 580sp_validatemergesubscription, 580SPARSE, 107-109SPATI,AL,37_38sPrD,359-361SPLIT 188, 792-793SQL

BatchComplete d, 359-3 60, 4OT 408Batchstarting, 3 59-360, 4OT 4O8

SQL Server 2005, 300-501SQL Server 2008

decompositores de palavra e identificadores deraiz de palavra, 154-155

ediçáo Compact,46-47ediçáo Developer,4647ediçáo Enterprise, 53, 734-735, 257-259ediçáo EvaluatioÍt, 4647edição Express, 37-38, 4546, 295-296ediçáo Standard, 45-46ediçáo Worþrovp,45-46edições,4249edições Enterprise, 4546falhas de serviço, diagnosticando, 378-386

Índice 661

Page 663: Livro_SQL

662

SQL Server Agentcluster de failover, 471472falhas de banco de dados, diagnosticarLdo, ST0-374

falhas de serviço, diagnosticando, 37 8-386instalando e configurando, 51-52jobs, criando, 274-276log shipping, 528objetos, copiando, 530-532segurança, 573-574SMTP (Simple Mail Transfer Protocol),62

SQL Server Analysis Services (SSAS), 4546, 4849,274-275,356-357

SQL Server Configuration Manager, 53-55,500-301,378

SgL Server Integration Services (SSß), 42-44edições do SQL Server 2008,48-49espelhamento de banco de dados, 504-505failover, migraçáo de login, 509-510importaçáo/exportação de dados, 203, 206pacotes, copiando, 530-532

SQL Server Management Studio (SSMS), 46-47,203-206,433434

SOL server Profilercolunas de dados, selecionando, 359-36I'eventos de rastreamento, especificando, 357-360filtros,360--362rastreamentos, definindo, 354=357visão geral, 354

SQL Server Reporting Services (SSRS), 44.-45, 48-49SgL Trace. Ver também Database Engine TuningAdvisor (DTÐ

colunas de dados, selecionando, 559-361correlacionando desempenho e monitorando da-dos,362-363

definindo um rastreamento, 354-357eventos de rastreamento, especificando, 357-360filtros, aplicando, 360-362gerenciando rastreamentos, 361-363Performance Data Warehouse, 433-434visáo geral, 554

Sqlageît.out,37lSSAS (SOL Server Anaþis Services), 45-46, 4849,274-275,356-357

SSIS (SOL Server Integrati oî Servrces), 4244edições do SQL Server 2008,48-49espelhamento de banco de dados, 504=505failover, migraçáo de login, 509-510importaçáo/exportaçáo de dados, 2O3, 206pacotes, copiando, 530-532

SSMS (SQL Serer Managemeît Service), 4Ø7,203-206,433-434

SSRS (SOL Server Reporting Services), 44-45,4849Stack dumps, 370-371, 391STANDBY 255Standby Mode, 522-523

índice

STA,RTED, eîdpoints, 29 3

StartTime, 3 60--36 l, 428-429Stmtcompleted, 359-360Stmtstarting, 359-360STOP-ON-ERROR, 2 4I -2 43SToPAX 257-258STOPATMARK, 257-258STOPBEFOREMARK, 257_258STOPPED, endpoints, 293Storage,{fea Nefwork (SAN), 390, 452454Surface Area Configuration Mar|ager, 3OO-3OISWITCH, 189-193sys.database_mifforing_witnesses, 49 1

sys.dm_db index_operational _stats, 426-427sys.dm_db index_physical_stats, 42æ27sys.dm_db_index_usage_stats, 426427sys. dm_db_mis sing_index_det ails, 42 6- 42 7

sys.dm_db_missing_indexgroup_stats, 426427sys.dm_db_missing_indexSrovps, 42H27sys. dm_exec_qvery _stats, 43 4sys.dm_exec_re quests, 43 4

sys.dm_exec_sessions, 434sys.dm_io_pending_requests, 429-430sys.dm_io_virtual_file_stats, 428-430sys.dm_os_wait _stats, 42943 1

System MonitorconÍadores,282contadores de desempenho, 350-351logs de contador, 348-350prática, criando log de contador, 351-353visáo geral, 347-348

TTabela de páginas suspeitas, 83-84Tabelas. Ver também Colunas; Índices; Páginas;

Linhasbloqueando, 394-395bloqueando índices online, 134=135Bulk Copy Program (BcP),2o4cenários de caso, gerenciamento dedados, TlT-119

colunas calculadas, 108-109compactação, linhas e página, 1O8-l lO, 1 13

constraints, implementando, 1 l3-1 15

criando, 99, 109-1 1 1

esquemas, 99particionando, 184-185prática

constraints, 115-116criando, 111-112exportando dados, 207 -2 I opafticionando uma tabela, 186

propriedades de coluna, 105-109sequências de collation, 51-52tipos de dados, 100-106

Page 664: Livro_SQL

Tabelas amplas, 1 10-1 1 1

Tabelas de trabalho, 78-79, 133-135, 373-37 4Tabelas temporárias, 1 10-1 1 1

TAKE OWNERSHIB 151_153TCP endpoints, 292-297TDE (Transparent Data Encryption), 533-335,338-339

tempdb,78-79enos de ativaçáo de dispositivo, 383falhas de serviço, diagnosticando, 383índices online, 734-135opções de índice, 134-735problemas de espaço, 373-374tabelas temporárias, 1 10-1 1 1

Tempo,276dados de hora, lo2decorrido, 428429eventos de rastreamento, 360-367tempo de conclusáo estimado, 428429

Tempo de espera, 429-430Tempo limite, consultas, 556-557Tempo limite, logins, 556-557Tentativas de login malsucedidas, 305. Ver tambémLogins

Teste IsÂlive, 471Teste LooksAlive, 453, 47 1

THESAURUS, 160-t6 1, 1 65-1 68Thread de comunicaçáo global, 497-498TIME, 102Timestamp (carimbo de datalhora), 85-86Trñ{NT, 100Tipo de espera, 429-430Topologia bidirecional, replicaçáo, 555-556, 569-571

Topologia do assinante central, 554-556Topologia do publicador central, 554-555TORN-PAGE-VERIFY 89TTansações minimamente registradas, 560-561TTansformaçáo, importaçáo/exportaçáo de dados,203,206

TTansmission Control Protocol (TCP), 292-297TTansmission Control Protocol/lnternet Protocol(TCP/rP), 299-300

TÏansparent Data Encryption (TDE), 333-335,338-339

Transportes, endpoints, 292Transportes HTIR 292Transportes TC\ 292Triggers

Bulk Copy Program (BCP), 205replicaçáo, 560-567, 567-569, 577-579triggers de DDL, 324-325

TRUNCATE TABLE, 560_561TSQL,292,355-356T-SQLQtery,433TSQL_Duration, 3 5 5-3 5 6

TsQr:Grouped , 355-356TSQr.-Locks, 355-356TSQL_Replay, 355-356TSQI:SPs, 355-356TYPE COLUMN, 153_154

U

UMS (User Mode Scheduler), 429-430UNDO,253Unidades de disco Fibre,451,454UNION, 373-374UNIQUEIDENTIFIER, 10ó_107UPDATE, 1 10-1 1 1, 132-133, 167, 266-267User Mode Scheduler (UMS),429430Usuários

Íazendo novo mapeamento, 53 1

logins, 30ómóveis/remoto s, 299-301, 37 9-382, 57 7-580práLtica, criando, 3O8-3Ogsem login, 306-307

Usuários móveis, replicação por merge, 577-580Usuários sem login, 306-307Utilitários, falhas de inicializaçäo, 37 8-386

vYalidação, 249, 5 7 o-57 2, 5 80VALUE, 135-136VA,RBTNARY (MAX), 107-108, 110-111, 151-153VA,RBINARY 103, 109-110, l5t-153VA,RCHAR (MAX), 1 10-1 1 1

VARCH,A,R (n), 1O2, 109*110v.{RcHAR, 751-153Verificações de vitalidade, 453, 471, 522-525VIEW ANY DATABASE, 314VIEWANY DEFINITION, ã14Views

Bulk Copy Program (BCP),2O4CREATE SCHEMA, 99Database Engine TuningAnalysis (DTÐ, 410

Views, indexadasDatabase Engine Tuning Anaþis (DTA), 410edições do SQL Server 2008,47-48partições

cenário de caso, 795-199criando esquemas de partiçáo, 180-183criando funções de partiçáo, 175-179gerenciando paftições, 188-192prâtica, particionando, 17 8-17 9, 182-183,186,192-193

tabelas e índices, 184-186Views de gerenciamento dinâmicas (DMVS), 425432Views indexadas

cenário de caso, 195-799criando funções de partiçáo, 175-179

Índice 663

Page 665: Livro_SQL

664

Database Engine Tuning Analysis (DTA), 410edições do SQL Server 2008,4748esquemas de partiçáo, criando, 180-18õgerenciando partições, 188-192prâtica, particionando, 17 8-77 I, I 82-1 83, 1 I 6,

192-193tabelas e índices, 184-186

VÎrlrs, 299-300, 452453Visual Studio Tools for Aplicativos,4344

índice

WWebservices, 4344. Ver também SgLserverlntegration Services (SSIS)

WHERE, I14,220Windows, versöes svportadas, 37 -38Windows Datacente\ 451Windows Management Instrumentatioq (WMI),4344,282-284. Ver também SQL Server Integra-tion Services (SSIS)

Windows Server 2003, 37-38,448Small Business Serv.er, 37 -38

Windows Server 2008, 37-38,448ediçáo Server Corc, 37-38

Windows Vista Home Basic, 37-38

Windows XPHome Edition, 37-38Home Reduced Media Edition, õ7-ã8Media center 2002, 37-38Professional, 37-38Professional Embedded Editiorr, 37-38Professional Reduced Media Edition, 37 -38Tabler Edirion sP2, 37-38

WITH FORMAT 241-242WITH ONLINE = OFÍ,134-135WITH RECOVERY 540_541WTTNESS, 295-296WMI (Windows Management Instrumentation),43-44,282-284. Ver também SQL Server Integra-tion Services (SSIS)

xXML (Extensible Markup Language)

dicionário de sinônimos, arquivos, 165-166edições do sQL server 2008,4748eventos Showplan, 358--359índices, full text, l5l-153tipos de dados, 103

xp_cmdshell, 300-301