Sumário Parte 1 Introdução ao desenvolvimento de banco de dados com o Microsoft SQL Server 2005 1 Apresentando o desenvolvimento de banco de dados com o Microsoft SQL Server 2005... 21 O processo de armazenar e gerenciar dados... 21 Introdução aos sistemas de banco de dados... 22 Entendendo os requisitos de um sistema de banco de dados... 23 Definindo a arquitetura de um aplicativo de banco de dados... 24 Utilizando um aplicativo monolítico com dados embutidos no código do aplicativo... 24 Utilizando um aplicativo monolítico com dados armazenados em um arquivo externo... 25 Utilizando um aplicativo de banco de dados com dados gerenciados por um servidor de bancos de dados... 26 Utilizando um aplicativo com uma camada genérica de acesso a dados... 27 Utilizando um aplicativo com a camada de apresentação, a camada de negócio e a camada de acesso a dados separadas... 29 Utilizando um aplicativo complexo com múltiplas opções para cada camada... 30 Conclusão... 30 2 Instalando e configurando o ambiente de desenvolvimento do Microsoft SQL Server 2005... 31 Utilizando um Virtual PC... 31 Requisitos do sistema operacional para desenvolvimento de aplicativos de banco de dados do SQL Server... 31 Ferramentas de produtividade recomendáveis... 32 Utilizando o Monitor de Desempenho... 32 Utilizando o Network Monitor... 32 Utilizando o Upgrade Advisor... 32 Ferramentas de desenvolvimento recomendáveis... 33 Edições do Microsoft SQL Server 2005... 33 Microsoft SQL Server Express Edition... 33 Microsoft SQL Server Workgroup Edition... 33 Microsoft SQL Server Standard Edition... 33 Microsoft SQL Server Enterprise Edition... 34 Instalando o SQL Server 2005... 34 Utilizando a ferramenta Surface Area Configuration... 42 Conclusão... 45 Referência rápida do Capítulo 2... 46 3 Revisando as ferramentas de desenvolvimento do Microsoft SQL Server 2005... 47 Introdução... 47 Utilizando o SQL Server Books Online... 47 Utilizando o SQL Server Configuration Manager... 48 Utilizando o nó SQL Server 2005 Services... 49 Utilizando o nó SQL Server 2005 Network Configuration... 50 Utilizando o nó SQL Native Client Configuration... 53
14 Introdução Utilizando a SQL Server Surface Area Configuration... 55 Utilizando a Surface Area Configuration For Services And Connections... 55 Utilizando a Surface Area Configuration For Features... 56 Utilitário Sac... 57 Utilizando o SQL Server Management Studio... 57 Administrando servidores com o SQL Server Management Studio... 57 Utilizando o Object Explorer no SQL Server Management Studio... 62 Escrevendo scripts no SQL Server Management Studio... 67 Escrevendo soluções e projetos no SQL Server Management Studio... 69 Utilizando os templates do SQL Server Management Studio... 71 Utilizando o SQL Server Profiler... 72 Utilizando a ferramenta SQL Server Profiler e criando um trace... 72 Quando você deve utilizar o SQL Server Profiler?... 74 Acessando tipos de evento... 75 Executando o SQL Server Profiler e o Monitor de Desempenho conjuntamente... 75 Visualizando deadlocks no SQL Server Profiler... 76 Utilizando o Database Engine Tuning Advisor... 77 Analisando o Database Engine Tuning Advisor... 77 Trabalhando com o Database Engine Tuning Advisor... 78 Gerenciando sessões do Database Engine Tuning Advisor... 80 Utilizando o SQLCmd... 80 Trabalhando com o utilitário SQLCmd... 80 Executando arquivos de script... 81 Conclusão... 81 Referência rápida do Capítulo 3... 82 Parte 2 Como criar um banco de dados Microsoft SQL Server 2005 4 Coletando e entendendo requisitos de negócio antes de criar objetos de banco de dados... 85 Entendendo os processos do negócio e os requisitos da interação do usuário... 85 Definindo o problema do negócio... 85 Coletando os requisitos... 86 Escrevendo os requisitos... 87 Entendendo os dados do negócio e seus tempos de vida... 88 Arquitetura e requisitos operacionais... 88 Disponibilidade... 88 Prevendo o volume de informações a armazenar e a gerenciar e prevendo o uso do banco de dados... 93 Utilizando a análise do custo de uma transação... 94 Conclusão... 100 Referência rápida do Capítulo 4... 101 5 Projetando um banco de dados para resolver as necessidades de negócio... 103 Projetando um banco de dados conceitualmente... 103 Validando os requisitos do negócio por meio de modelos conceituais... 104 Aprovando o modelo... 109 Projetando um banco de dados logicamente para tirar vantagem do mecanismo relacional... 109 Criando colunas para capturar atributos de objetos... 110 Validando os dados... 118 Criando fisicamente um banco de dados... 121 Selecionando um projeto adequado de armazenamento para um banco de dados... 121 Criando um banco de dados... 122
Introdução 15 Projetando os schemas do banco de dados para agrupar logicamente objetos de banco de dados... 124 Criando tabelas para implementar um projeto... 125 Conclusão... 126 Referência rápida do Capítulo 5... 127 Parte 3 Como pesquisar dados no Microsoft SQL Server 2005 6 Lendo dados do Microsoft SQL Server 2005 a partir de aplicativos clientes... 131 Introdução aos Microsoft Data Access Components... 131 Evitando componentes MDAC obsoletos... 131 Delineando a arquitetura MDAC... 132 Entendendo o Open Database Connectivity (ODBC)... 132 Entendendo o OLE DB e ADO... 135 Entendendo o ADO.NET... 138 Introdução ao provedor de dados.net SQL Server... 140 Utilizando a classe SqlConnection... 140 Utilizando a classe SqlCommand... 140 Utilizando a classe SqlDataReader... 141 Utilizando a classe SqlDataAdapter... 142 Utilizando a classe TableAdapter... 145 Introdução ao SQL Native Client... 147 Utilizando o tipo de dados XML... 147 Utilizando Multiple Active Result Sets (MARS)... 147 Utilizando o Query Notification... 148 Conclusão... 149 Referência rápida do Capítulo 6... 150 7 Selecionando os dados que você precisa... 151 Selecionando dados a partir de uma única tabela... 151 Utilizando operadores AND e OR... 153 Comparando valores NULL... 154 Utilizando a instrução CASE... 155 Utilizando argumentos de pesquisa... 155 Selecionando dados a partir de múltiplas tabelas... 157 Utilizando aliases... 157 Utilizando a sintaxe INNER JOIN... 158 Utilizando mais de duas tabelas... 159 Utilizando LEFT JOIN... 159 Utilizando RIGHT JOIN... 161 Utilizando FULL JOIN... 162 Lendo valores únicos... 162 Utilizando funções escalares fornecidas pelo sistema... 162 Projetando e utilizando UDFs escalares... 168 Projetando e utilizando procedimentos armazenados para recuperar valores escalares... 170 Lendo dados relacionais e dados XML... 171 Visualizando resultados XML no SQL Server Management Studio... 171 Convertendo dados relacionais no formato XML... 173 Convertendo dados XML em um formato relacional... 177 Consultando dados XML e dados relacionais com a XQuery... 179 Classificando dados... 180 Conclusão... 182 Referência rápida do Capítulo 7... 183
16 Introdução 8 Criando visões para encapsular consultas... 185 Selecionando dados de uma única visão... 185 Criando uma visão... 185 Modificando uma definição de visão... 189 Atualizando dados por meio de uma visão... 189 Visões particionadas... 190 Mesclando dados de visões e tabelas... 191 Trabalhando com visões dentro de aplicativos clientes... 191 Conclusão... 193 Referência rápida do Capítulo 8... 194 9 Recuperando dados utilizando objetos programáveis... 195 Introdução... 195 Solucionando um problema simples... 196 Entendendo UDFs escalares... 198 Recuperando conjuntos de resultados... 200 Atualizando dados... 205 UDFs e procedimentos do Common Language Runtime... 209 Trabalhando com cálculos estatísticos... 210 Trabalhando com procedimentos armazenados CLR... 217 Conclusão... 219 Referência rápida do Capítulo 9... 220 Parte 4 Como modificar dados no Microsoft SQL Server 2005 10 Inserindo dados no Microsoft SQL Server 2005... 223 Utilizando a instrução INSERT... 223 Criando uma instrução INSERT com SQL Server Management Studio... 223 Utilizando valores especiais para inserção de linha... 225 Utilizando outras formas da instrução INSERT... 226 Inserindo dados por meio de visões... 227 Utilizando a cláusula WITH... 228 Utilizando gatilhos INSTEAD OF INSERT em visões... 229 Importando dados no SQL Server 2005... 230 Utilizando o utilitário BCP... 230 Utilizando o comando BULK INSERT... 232 Utilizando serviços de integração para inserir dados... 232 Criando seu próprio pacote... 238 Encapsulando operações de inserção em procedimentos armazenados... 242 Desencadeando ações automaticamente ao inserir dados... 244 Lidando com erros ao inserir dados... 246 Gerenciando erros... 248 Inserindo dados a partir do ADO.NET... 249 Conclusão... 250 Referência rápida do Capítulo 10... 251 11 Excluindo dados do Microsoft SQL Server 2005... 253 Utilizando a instrução DELETE... 253 Criando uma instrução DELETE com o SQL Server Management Studio... 253 Definindo a condição WHERE... 254 Utilizando relacionamentos para realizar exclusões... 255 Excluindo dados por meio de visões... 256 Utilizando os gatilhos INSTEAD OF DELETE nas visões... 257 Encapsulando operações de exclusão em procedimentos armazenados... 258 Implementando a concorrência pessimista para operações Delete... 259
Introdução 17 Implementando a concorrência otimista para operações de exclusão... 260 Desencadeando ações automaticamente ao excluir dados... 264 Lidando com erros... 264 Dados inexistentes... 265 Dados relacionados com outras tabelas a serem excluídos... 266 Outros erros... 266 Excluindo dados a partir do ADO.NET... 266 Gerenciando erros durante o processo de exclusão... 268 Conclusão... 269 Referência rápida do Capítulo 11... 270 12 Atualizando dados do Microsoft SQL Server 2005... 271 Utilizando a instrução UPDATE... 271 Criando uma instrução UPDATE com o SQL Server Management Studio... 271 Definindo a condição WHERE... 272 Atribuindo novos valores a colunas... 272 Utilizando a aritmética para atualizar informações... 273 Alterando o conteúdo de uma coluna grande (MAX)... 273 Alterando o conteúdo de uma coluna grande (BLOB)... 274 Atualizando dados por meio de visões... 274 Utilizando gatilhos INSTEAD OF UPDATE em visões... 274 Encapsulando operações de atualização em procedimentos armazenados... 276 Implementando a concorrência pessimista e otimista para operações de atualização... 279 Desencadeando ações automaticamente ao atualizar dados... 279 Lidando com erros... 280 Valor atribuído é mais alto que o limite do tipo de dados do campo... 280 O valor de coluna viola a integridade referencial... 281 Atualizando dados a partir do ADO.NET... 281 Utilizando datasets e adaptadores de tabela... 282 Utilizando procedimentos armazenados com adaptadores de tabela... 285 Conclusão... 291 Referência rápida do Capítulo 12... 292 Índice... 293