Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Apostila Microsoft SQL Server 7.0, Notas de estudo de Informática

O SQL Server é um sistema de gerenciamento de bancos de dados cliente/servidor de alto desempenho com alta integração com o Windows NT

Tipologia: Notas de estudo

2011

Compartilhado em 20/03/2011

wwill-de-paula-3
wwill-de-paula-3 🇧🇷

18 documentos

1 / 91

Documentos relacionados


Pré-visualização parcial do texto

Baixe Apostila Microsoft SQL Server 7.0 e outras Notas de estudo em PDF para Informática, somente na Docsity! Apostila Microsoft SQL Server 7.0 Instalacão, configuração e gerenciamento PAGE 87 PAGE 87 Sistemas Gerenciadores de Banco de Dados Um sistema gerenciador de banco de dados (SGBD) como o SQL Server é responsável por armazenar dados de forma confiável e permitir fácil recuperação e atualização desses dados. Um SGBD relacional armazena dados de forma relacional, isto é na forma de linhas e colunas. Conceitos Relacionais Um registro [record] ou linha [row] é um grupo de variáveis com tipos de dados diferentes, que armazenam dados relacionados. Por exemplo, um registro pode conter os dados relativos a um produto vendido pela empresa, como descrição, código de identificação, quantidade em estoque. Um campo [field] ou coluna [column] é um dos itens de informação dentro de uma linha da tabela, como a descrição da informação. Uma tabela [table] é um conjunto de linhas (registros) com a mesma estrutura, armazenados de forma permanente em disco.As tabelas são compostas de linhas(row) ou registros (record) e colunas(column) ou field(campo). Um banco de dados [database] é um conjunto de tabelas que contêm dados relacionados. Por exemplo, um sistema de contas a pagar poderia ter um banco de dados de contas a pagar, com uma tabela para duplicatas, uma tabela para bancos, uma tabela para contas etc. Um índice [index, plural 'indexes' ou 'indices'] é um mecanismo que permite pesquisar rapidamente por linhas em uma tabela, dado o valor de uma determinada coluna (ou algumas colunas) da tabela. Um índice primário ou chave primária define um valor único, que não pode ser repetido em outras linhas da tabela. Uma consulta [query] é um pedido de pesquisa no banco de dados, que permite obter todo um subconjunto da tabela ou de várias tabelas, especificando as condições de seleção. Desktop x Cliente/Servidor Uma aplicação que utiliza bancos de dados é composta de três partes: • Interface com o usuário: responsável por validar as entradas do usuário, e iniciar pesquisas de acordo com um pedido do usuário. • Mecanismo de acesso [database engine]: responsável pela manutenção das estruturas de dados necessárias em arquivos, pelos detalhes internos do acesso aos dados, e pela manutenção da integridade dos dados. • Armazenamento de dados: arquivos que contém os dados em si. Um banco de dados "desktop" (ou baseado em arquivos) é aquele no qual a interface com o usuário e o mecanismo de acesso ficam no mesmo computador (a estação) e apenas os arquivos de dados ficam num servidor de rede. Operações de consulta ou pesquisa devem passar através da rede. Por exemplo, quando um usuário quer ver uma relação de contas a pagar, mas apenas em determinado período, o sistema deve selecionar alguns registros baseado na data informada. No ambiente desktop, a estação traz todos os registros através da rede, mesmo os que não são utilizados. O tráfego gerado na rede é grande, principalmente quando várias estações acessam simultaneamente o servidor. PAGE 87 Já num banco de dados cliente/servidor, a interface com o usuário fica na estação e se comunica remotamente com o mecanismo de acesso, que é um sistema gerenciador de banco de dados (SGBD) rodando no servidor. Quando o SGBD recebe um pedido para selecionar alguns dados, ele acessa localmente os dados no servidor e retorna apenas o resultado pedido. No caso de uma atualização, não é necessário nem mesmo retornar um resultado, apenas informar que a atualização foi feita. O diagrama abaixo resume as diferenças entre os ambientes: Desktop cliente/servidor O SQL Server, como já foi dito, é um sistema de gerenciamento de bancos de dados cliente/servidor. PAGE 87 2 - Instalação e Configuração Requisitos de Hardware e Software Opções usadas na instalação Instalando o software de servidor Verificando a instalação Instalando o software de cliente Registrando um servidor Solução de problemas de instalação Removendo o SQL Server 7.0 Objetivos: - Saber o que é necessário para instalar o SQL Server em um computador; - Aprender a instalar o SQL Server em um servidor Windows NT e a configurar as estações de rede para utilizá-lo. Requisitos de Sistema Antes de instalar o SQL Server, é preciso saber quais os requisitos mínimos e recomendados para a instalação. Computador: Intel e sistemas compatíveis, ou DEC Alpha e compatíveis: É recomendável que todos os componentes de hardware escolhidos estejam listados na HCL (lista de compatibilidade de hardware) do Windows NT. Memória: Mínimo de 32 Mb. Recomendável memória adcional, especialmente se o servidor já estiver processando outras funções além de banco de dados, ou se forem usados bancos de dados grandes e replicação Sistema Operacional: O SQL Server pode ser instalado no Windows NT 4.0 ou superior, com o Service Pack 3 ou posterior, nas plataformas de hardware citadas acima, ou no Windows 9x (no NT ele roda como um serviço e no 9x como uma aplicação). O software de cliente, para acesso ao SQL Server nas estações, pode ser instalado em Windows NT Server, Windows NT Workstation, Windows 95/98, ou Windows 16-bits (3.x), MS-DOS, UNIX, Macintosh, ou navegadores Internet. Espaço em disco: Numa instalação mínima, são usados 70 MB, e numa instalação completa, 160 MB, incluindo todos arquivos de programas, documentação online, ferramentas de desenvolvimento, e arquivos de exemplo. Uma instalação de um novo servidor, só com as ferramentas de gerenciamento, exige 70 MB Software de rede: Numa rede Windows NT, o SQL Server usa o software de rede integrado. Não é necessário software adicional, exceto para conectar a alguns outros tipos de rede. No caso da Novell Netware, o suporte é fornecido pelo protocolo NWLink do Windows NT. Não é recomendado instalar o SQL Server num computador que seja controlador primário de domínio (PDC) ou controlador reserva (BDC). Outras considerações PAGE 87 acentuados são tratados de forma diferente dos caracteres não acentuados (essa é a ordem de classificação default durante a instalação). O SQL Server tem a capacidade de armazenar caracteres ASCII padrão, e caracteres Unicode. Os caracteres Unicode são capazes de representar mais de 64000 caracteres diferentes., embora os caracteres ASCII sejam capazes de representar apenas 256 caracteres. Depois de escolher o conjunto de caracteres e a ordem de classificação, você deve escolher uma comparação Unicode [Unicode collation], que funciona como uma ordem de classificação para os caracteres Unicode armazenados no SQL Server. Uma comparação Unicode consiste de um local e vários estilos de comparação. Locais, normalmente nomeados de por países ou regiões culturais, ordenam caracteres de acordo com o padrão naquela área. O programa de instalação do SQL Server vai fornecer uma comparação Unicode padrão, com base no conjunto de caracteres e ordem de classificação que você escolheu. É recomendável que não se altere essa seleção, pois caso ela seja alterada, a migração de Unicode para não-Unicode torna-se mais difícil, e dados Unicode e não-Unicode podem ser ordenados de maneiras diferentes. Protocolos de Rede Para cada tipo de cliente de rede, o SQL Server possui uma Net-library, um driver que suporta comunicação através desse tipo de rede. As opções disponíveis são: • Named Pipes (Netbeui): Suporta o protocolo Netbeui. É instalado por default. Você não deve removê-lo pois os utilitários do SQL Server depende desta Net-Library. • Multi-protocol: suporta a conexão através de vários protocolos de rede, suportando também segurança integrada e criptografia (caso a aplicação suporte). • NWLink IPX/SPX: comunica-se com clientes Netware. O SQL Server pode se registrar como um serviço numa rede Netware. • TCP/IP sockets: suporta comunicação através de Windows sockets, por exemplo, com um cliente de Internet. • Banyan VINES, AppleTalk ADSP, DECnet: outros tipos de rede. Opções de auto-inicialização Serviço é um programa executável que não tem interface com o usuário, mas tem formas de controlar. Como iniciar e parar o serviço determinado. Definem se os serviços MSSQLServer e SQLServerAgent iniciarão automaticamente com o Windows NT ou serão iniciados manualmente. Essa opção pode ser alterada depois no Painel de Controle [Control Panel] do Windows NT, opção Serviços [Services]. Para o serviço SQLServerAgent, você pode também definir qual o nome de usuário e senha que ele utiliza para se conectar ao sistema. Modo de licenciamento O SQL Server pode ser licenciado por servidor [per server], onde para cada servidor adquire-se N licenças de acesso, ou por estação [per seat], onde existe uma licença para cada estação, independentemente do número de servidores usados. Durante a instalação você pode definir qual dos modos utilizar. Para alterar essas opções posteriormente, use o ícone Licenciamento [Licensing] no Painel de Controle do Windows NT. PAGE 87 Instalando o software de servidor Criando uma conta para o SQLServerAgent Durante a instalação, SETUP pede um nome de conta de usuário e a senha dessa conta, para uso do serviço SQLExecutive. Existem duas maneiras de selecionar o usuário : • Criar uma conta no Windows NT . • Utilizar a conta Local System do Windows NT. Mas nesse caso nem todos os recursos do SQLExecutive podem ser usados. Por exemplo: Ao utilizar Backups poderá não se ter acesso ao driver de destino do Banco de Dados. É recomendável criar uma nova conta de usuário antes de instalar. Essa conta não deve ser usada por usuários para logar no computador. Ela será exclusiva para o SQL Executive. Para isso, abra o Gerenciador de Usuários [User Manager] do Windows NT, no grupo/ menu de programas Ferramentas Administrativas [Administrative Tools]. Clique em Usuário|Novo usuário... [User|New user...]. Informe o nome de usuário "SQLExecutive" (o nome pode ser qualquer). Informe uma senha e anote-a para usar mais tarde com o SETUP. Desmarque a opção "O usuário deve alterar a senha no próximo logon" [The user must change password...] e marque "A senha nunca expira" [Password never expires]. Depois acrescente esse usuário ao grupo local "Administradores" [Administrators]. Use o menu Diretivas|Direitos de usuário... [Policies|User rights] para conceder os direitos de "Logon como serviço" [Logon as a service], "Agir como parte do sistema operacional" [Act as part of the operating system], "Aumentar cotas" [Increase quotas], "Substituir um token de nível de processo" [Replace a process level token] à conta 'SQLExecutive' . Como são direitos avançados, marque a opção Exibir direitos avançados do usuário [Advanced User Rights]. Iniciando o SETUP Para instalar o SQL Server 7, efetue logon no Windows NT com uma conta que tenha privilégios administrativos, coloque o CD de instalação na unidade de CD . Em alguns segundos, o programa de Instalação do SQL Server irá iniciar automaticamente e mostrar a tela abaixo: Nessa tela você tem diversas opções. Para iniciar a instalação do SQL Server, selecione "Install SQL Server 7.0 Components". A próxima tela permite PAGE 87 que se selecione quais componentes se quer instalar. Nota: Se você tiver a opção de autoReprodução do CD desativada, você pode iniciar manualmente o programa de instalação do SQL Server. Para fazê-lo, vá para o diretório raiz do CD de instalação do SQL Server, e execute o programa "setup.bat". Então será mostrada a tela acima. Se o SQL Server estiver sendo instalado de um compartilhamento da rede, mude para a pasta do compartilhamento que contem o SQL Server e execute o arquivo "setup.bat". Nota: A opção "Install SQL Server Prerequisites" permite intalar os softwares necessários para se poder instalar o SQL Server. Estes são o service pack 4 do Windows NT e o Internet Explorer 4.01. Install SQL Server 7.0 Components Nessa tela, selecione "Database Server- Standard Edition" se você quiser instalar o SQL Server no Windows NT, ou "Database Server- Desktop Edition" se você quiser instalar o SQL Server no windows 9x. Select Install Method Se você quisesse instalar em um computador remoto, clicaria em "Remote Install" e informaria as opções do computador remoto. No nosso caso, clique em Next para fazer a instalação local. Aí, aparece a tela de boasa- vindas: Clique em Next para continuar. PAGE 87 Nota: Para mudar uma net- Library depois da isntalação, use o "SQL Server Network Utility" (SRVNETCN.EXE) Services Accounts Aqui você pode usar a mesma conta para os dois serviços (SQLServer e SQLServerAgent), iniciando automaticamente o serviço SQL Server. Para isso, selecione o primeiro botão [Use the same account for....]. Caso você queira usar uma conta diferente para cada serviço, selecione "Customize the settings for each service" e os botões SQL Server e SQL Server Agent se tornarão ativos. Aí as opções do serviço [Service Settings] serão referentes ao serviço selecionado. Se foi criada a conta do usuário para uso do SQLServerAgent, informe o nome do usuário, a senha e confirme a senha (o default é o nome de usuário conectado atualmente). Informe também o domínio do NT Server onde essa conta existe. Caso não tenha criado a conta marque a opção Install to log on as Local System account (é uma conta predefinida do Windows NT). Nota: Caso se escolha usar a conta de sistema local, o SQL Server não será capaz de se comunicar com outros servidores. Clique em Next para continuar. A seguir aparece a tela de seleção do modo de licenciamento [Choose Licensing Mode]. Escolha o licenciamento Per Server ou Per Seat, levando em conta o que foi discutido anteriormente. Clique em Next para continuar. "Copying Files" e "SETUP is..." ... O SETUP vai copiar os arquivos necessários para o diretório de instalação, reindexar as tabelas de sistema, e definir a configuração inicial do SQL Server. Esse processo leva cerca de 10-15 minutos, dependendo da velocidade do seu computador. Após esse processo, o SQL Server terá sido instalado e estará pronto para usar. As ferramentas do SQL Server estarão disponíveis no submenu "Microsoft SQL Server 7.0", dentro do menu Iniciar|Programas [Start|Programs] do Windows NT 4.0. Você precisará de iniciar seus serviços antes de poder conectar-se pela primeira vez ao servidor SQL Server. PAGE 87 Depois que o SQL Server estiver instalado, há alguns passos a serem completados antes de se poder dizer que o SQL Server está pronto para rodar. Alguns desses passos devem ser executados apenas uma vez para se assegurar que o SQL Server foi instalado corretamente e para prepará-lo para rodar corretamente no futuro. Aqui vamos citar esses passos. Outros passos, que incluem configurações, ajustes e otimização, estabelecimento de IDs para login e IDs de usuários do banco de dados, e é claro, a criação de novos bancos de dados, serão discutidos em outras seções. Nesta seção o objetivo será verificar se o SQL Server foi instalado corretamente. Verificando se o SQL Server foi instalado corretamente Depois que o SQL Server estiver instalado, você deve gastar alguns minutos para verificar que o mesmo foi instalado e está rodando adequadamente. Use os passos abaixo para verificar a instalação. Verifique se as pastas de programas e dados foram criadas Use o NT Explorer (ou Windows Explorer) para verificar que os arquivos de programas do SQL Server e os arquivos de dados foram instalados nas pastas que você especificou durante o processo de instalação. Cada pasta deve conter pastas adicionais de acordo com o que foi dito anteriormente (em Diretórios). Verifique se todas as subpastas tanto nas pastas de programas quanto de arquivos existem. Deve-se verificar o conteúdo da subpasta /data, que está abaixo da pasta de dados que você especificou. É aí que o SQL Server cria e armazena vários bancos de dados padrão e logs de transações. A pasta /data deve se parecer com a figura abaixo. Os arquivos são: Distmdl.mdf e Distmdl.ldf (apenas se obejetos opcionais de replicação foream instalados. Northwnd.mdf e Northwnd.ldf Master.mdf e Mastlogldf Model.mdf e Modellog.ldf Msdbsdata.mdf e Msdbblog.ldf Pubs.mdf e Pubs_log.ldf Tempdb.ldf e Templog.ldf Verificar que todas as ferramentas de gerenciamento do SQL Server estão instaladas Verifique se as ferramentas de gerenciamento do SQL Server que você especificou durante a instalação foram instaladas. O modo mais fácil de fazer isso é clicando em Iniciar | Programas | Microsoft SQL Sever 7.0. Aí você verá um menu com a listagem PAGE 87 de todos os programas, utilitários e documentação online que você especificou durante a instalação. Verifique que os serviços do SQL Server estão carregados e executando Quando você instalou o SQL Server, seus dois serviços principais - SQLServerAgent e MSSQLServer - foram instalados e configurados para iniciar automaticamente (assumindo que você quis inicialização automática). Quando o SQL Server é instalado pela primeira vez, os dois serviços não são iniciados automaticamente até que o NT Server seja reiniciado. Nota: Veja mais sobre os serviços na seção do Service Manager. Conferindo se os dois serviços foram instalados, e manualmente iniciando-os pela primeira vez Abra o Painel de Controle do NT, e então dê um duplo clique no ícone Serviços. Aparece então a caixa de diálogo de Serviços. Percorra a lista de serviços até que você veja pela primeira vez o serviço MSSQLServer. Se você não reinicializou o computador desde que instalou o SQL Server, ele deve ter um Estado [Status] em branco. E em Inicialização [Startup], deve estar configurado como automático. Para iniciar manualmente o serviço, clique nele uma vez para que o mesmo fique selecionado, e então clique no botão Iniciar [Start]. Depois de uns 30 segundos, o Estado [Status] vai mudar para Iniciado [Started] e o serviço está agora sendo executado. Percorra a lista um pouco mais até que você veja o serviço SQLServerAgent, e ele também deve estar com o Estado em branco e a Inicialização como Automática. Para iniciá-lo manualmente, faça da mesma maneira que foi feito com o serviço MSSQLServer, mas agora selecionando o serviço SQLServerAgent. Depois de uns 15 segundos, o Estado [Status] vai mudar para Iniciado [Started] e o serviço está agora sendo executado. Se tudo estiver correto, feche a caixa de diálogo de Serviços e o Painel de Controle. E se os serviços não estiverem aí? Se os serviços não estiverem listados, sua instalação do SQL Server falhou e você vai ter que reinstalá-lo, mas isso é raro. Você pode ter notado que na coluna Inicialização [Startup], estava a a palavra Manual, ao invés de Automático. Se você se vir nessa situação, você provavelmente esqueceu de escolher a opção auto-iniciar [Auto-start] quando você instalou o SQL Server. É bem fácil corrigir isso. Es colhendo auto-iniciar U m de cada vez, selecione cada um dos serviços do SQL Server na caixa de diálogo de Serviços e cli que no botão Inicialização [Startup]. Isso mostra PAGE 87 MS DTC Client Support: A ferramenta de Coordenação de Transações Distribuídas (DTC) da Microsoft fornece suporte aos clientes DTC. Apenas necessita ser instalada em clientes que executem uma aplicação do SQL Server que exigam o DTC. Development files: Esses arquivos são necessários para desenvolvedores OLE-DB para a criação de programas utilizando ODBC, DB-Library, ODS, SQL-DMO, Embedded SQL for C, e MS DTC. Geralmente, apenas desenvolvedores SQL Server precisarão desses arquivos. Sample files: Estes arquivos são arquivos de exemplo feitos para os desenvolvedores analisarem e aprenderem com eles. Assim como os arquivos de desnvolvimento, apenas desenvolvedores precisarão deles. Replication Conflict Resolution Tool: Utilizada para ajudar a resolver conflitos de replicação entre dois servidores SQL Server. Você apenas precisa desta ferramenta se você implementar replicação em seus servidores. Livros online: Esta é uma documentação completa e comprensiva do SQL Server, e é interessante instalá-la em todo cliente. Ocupa cerca de 15 MB de espaço no disco, mas vale a pena. Se você não quiser ocupar todo esse espaço em um cliente, você também pode instalar os livros online em um compartilhamento de rede, e então conectar a ele quando necessário. Você também tem a opção de executá-lo a partir de um drive de CD instalado localmente. Não importa quais das opções acima você decidir instalar, as seguintes ferramentas e arquivos são instalados automaticamente. eles incluem bcp, isql, osql, ODBC, e DB- Library. Falaremos deles mais tarde. Software e Hardware necessário para a instalação do software de cliente CPU: No mínimo um Alpha AXP ou um Intel de 32 bits (80486). Recomenda-se um Pentium 200 ou mais veloz. RAM: No mínimo 32 MB. Recomenda-se 32 MB no Windows 9x, e 64 MB ou mais no Windows NT. Monitor e placa de vídeo: Qualquer placa de vídeo que esteja instalada corretamente funcionará. Recomenda-se pelo menos um monitor de 15" com resolução de 1024x768. Espaço em disco: 73 MB para a instalação de todas as ferramentas de gerenciamento. Como provavelmente não serão instaladas todas elas, pode ser suficiente menos espaço. Drive de CD-ROM: Apenas exigido se a instalação estiver sendo feita a partir de um CD. Placa de rede: Qualquer placa de rede que funcione no sistema operacional será aceita. Recomenda-se uma placa de 10 ou 100 Mbits se você estiver acessando um ou mais servidores SQL Server pesadamente a partir da estação trabalho. Sistema operacional: No mínimo NT Server ou Workstation 4.0 (com Service Pack 3), ou Windows 9x. Recomenda-se usar sempre o Service Pack mais recente em qualquer desses sistemas. De onde instalar as ferramentas de gerenciamento As ferramentas de gerenciamento do SQL Server podem ser instaladas a partir dos seguintes locais. CD de instalação do SQL Server: As ferramentas de grenciamento podem ser instaladas diretamente do CD executando-se o programa de instalação do SQL Server. Este é o mesmo programa utilizado para instalar o SQL Server. PAGE 87 Compartilhamento de rede: O meio mais flexível de se instalar as ferramentas de gerenciamento é instalá-las a partir de um compartilhamento na sua rede. O processo de instalação se inicia quando se executa o arquivo setup.bat, o mesmo utilizado para instalar o SQL Server. Se você pretende isntalar diversas cópias das ferramentas de administração em várias máquinas, este é o meio mais eficiente. Como instalar as ferramentas de gerenciamento A instalação das ferramentas de gerenciamento do SQL Server é um processo simples, Na verdade, os passos exigidos para a instalação das ferramentas de gerenciamento são praticamente os mesmos necessários para instalar o SQL Server. Isso significa que você já conhece o processo. Abaixo listam-se os passos necessários para a instalação das ferramentas de gerenciamento do SQL Server em um cliente. Se você estiver instalando as ferramentas de cliente no Windows NT, você deve efetuar logon com uma conta que tenha privilégios administrativos. Se você estiver instalando- as no Windows 9x, você pode efetuar logon com qualquer conta de usuário. Certifique-se de que não há nenhum outro programa sendo executado, antes de iniciar o processo de instalação. Se houver, feche-os antes de continuar. Confirme também se há alguma versão antiga das ferramentas de gerenciamento instaladas na máquina. Se houver, remova-as antes de instalar a nova versão. Se você estiver fazendo a instalação a partir de um CD, apenas insira o CD do SQL Server no drive de CD. Em alguns segundos, a tela do programa de instalação do SQL Server vai surgir automaticamente. Caso você não esteja instalando de um CD, execute o arquivo setup.bat do compartilhamento de rede onde estão os arquivos de instalação. Aparece a tela abaixo. Nesta tela, você tem uma porção de opções. Selecione Install SQL Server 7.0 Components. Na próxima tela, escolha Database Server- Desktop Edition. Depois você deve escolher se vai fazer uma instalação para a máquina local ou para uma máquina remota. Supondo que você esteja instalando as ferramentas de gerenciamento estando fisicamente na máquina em que elas serão executadas, escolha Local Install. Depois de passar por estas telas introdutórias, aparece a primeira tela da instalação do SQL Server. O programa de instalação é um assisten te que te encaminha pelo PAGE 87 processo de instalaç ão. Embora o process o seja o mesmo que o da instalação do SQL Server, você não repetirá exatamente os mesmos passos. Aqui, você quer instalar apenas as ferramentas de gerenciamento. Clique em Next para continuar. Aparece a tela do acordo de licença de software. Clique em Yes para continuar. Agora, você deve digitar seu nome e o nome da sua organização, e a seguir o número de série do produto. Clique em Next para continuar. Agora, aparece a tela de tipo da instalação [Setup Type]. Para instalar apenas as ferramentas administrativas, escolha Custom e clique em Next. Antes de prosseguir, verifique se as pastas escolhidas estão corretas, e se você tem espaço em disco suficiente.Se não, mude as pastas ou discos, clicando no botão Browse. PAGE 87 Depois que você tiver adicionado os servidores SQL Server desejados, clique em Next, e vai aparecer uma janela perguntando a você qual opção de conexão que você quer utilizar para se conectar ao SQL Server. Você tem duas opções: autenticação do Windows NT ou autenticação do SQL Server. Se esta é a primeira instalação do SQL Server na sua organização, escolha por agora autenticação do SQL Server; isso pode ser mudado mais tarde se você mudar seu modo de segurança. Mas se não for a primeira instalação do SQL Servre, escolha o modo de segurança que os outros servidores SQL Server estiverem utilizando. O exemplo a seguir supõe que você tenha escolhido a autenticação do SQL Server [SQL Server authentication]. Depois de feita sua escolha, clique em Next. A seguir, o assistente quer que você escolha se o SQL Enterprise Manager se lembre do seu nome de login e senha. A primeira opção, "Efetuar logon automaticamente usando minha informação de conta do SQL Server" [Login Automatically Using My SQL Server Account Information], pode ser escolhida para que o Enterprise Manager se lembre de sua senha e nome de login. Assim, você não precisa de, a cada vez que iniciar o Enterprise Manager, ficar digitando essa informação novamente. Se você não quiser que o Enterprise Manager lembre-se de seu login e senha, escolha a opção "Perguntar a informação da conta do SQL Server quando se conectar" [Prompt for the SQL Server account information when connecting]. Se você escolher a primeira opção, digite SA como nome de login, e deixe a senha [Password] em branco. Você deve usar esse nome de login e senha quando registra pela primeira vez um novo servidor SQL Server poque você ainda não atribuiu à conta SA uma senha, nem criou qualquer outro nome de login. Clique em Next para continuar. Você deve adicionar um servidor SQL Server a um grupo de servidores. Nessa tela, você pode adicionar ao grupo padrão SQL Server Group, ou a um outro grupo preexistente (selecionando a primeira opção). Você pode ainda criar um novo grupo (selecionando a segunda opção [Create a new top-level SQL Server group to add the SQL Server(s) to.]), e seu servidor será adicionado a esse grupo. Grupos de servidores são usados para agrupar servidores SQL Server de usos semelhantes, para fins de aministração, e são completamente opcionais. Tudo que os grupos de servidores fazem é agrupar grupos de servidores semelhantes para visualização no Enterprise Manager. Escolha a opção mais adequada e clique em Next para continuar. O assitente de registro mostra sua última tela. Se você quiser fazer quaisquer mudanças, você pode fazê-las clicando no botão Back. Ou, se tudo estiver conforme você queria, clique em Finish para concluir. A caixa de diálogo de registro do SQL Server aparece, e você recebe uma mensagem dizendo se PAGE 87 o registro foi bem-sucedido. Se você receber uma mensagm de erro, veja a seção de solução de problemas. Clique em Close, e volta-se para o SQL Entrprise Manager. Embaixo de Console Root, você verá o cabeçalho Microsoft SQL Servers. Clique no sinal de mais perto deste cabeçalho, e um ou mais grupos de servidores serão mostrados. O(s) servidor(es) que você acabou de registrar aparecerão dentro do grupo que você definiu para ele(s). Supondo que você não tenha criado nenhum grupo e tenha adicionado-os ao grupo padrão, o único grupo listado será o padrão SQL Server Group. Para ver o servidor que você acabou de registrar, clique no sinal de mais perto do grupo de servidores em que você adicionou o(s) servidor(es). Se o servidor não aparecer dentro de nenhum grupo de servidores, ele não foi registrado corretamente com o Enterprise Manager. Registrando um servidor manualmente Se você não quiser usar o Assistente de Registro, você não precisa. Registrando um servidor manualmente com o Enterprise Manager O primeiro passo é desligar o Assistente de registro. Depois que ele estiver desligado, então dessa vez em diante, você será capaz de registrar manualmente qualquer servidor com o Enterprise Manager. Para desligar o assistente de registro, você deve primeiro iniciá-lo clicando com o botão direito no texto Microsoft SQL Server, ou em qualquer grupo de servidores, ou em qualquer servidor registrado, e então selecionar a opção Novo registro de servidor [New SQL Server Registration]. Isso mostra a primeira tela do Assistente de registro. Para desligá-lo, selecione a opção "A partir de agora eu quero realizar essa tarefa sem usar um assistente" [From now on I want to perform this task without using a wizard]. Clique em Next e na outra janela em Cancel. Isso fechará o assistente de registro e também o impedirá de ser executado a cada vez que você for registrar um servidor. Agora, para regsitrar um servidor manualmente, clique com o botão direito no texto Microsoft SQL Server, ou em qualquer grupo de servidores, ou em qualquer servidor registrado, e então selecionar a opção Novo registro de servidor [New SQL Server Registration]. Isso mostra a caixa de diálogo "Propriedades do servidor SQL registrado" [Registered SQL Server Properties] Complete essa janela usando o mesmo tipo de informações que foram descritas quando descrevemos o Assistente de registro. Uma diferença entre o Assistente de registro e essa caixa de diálogo são as três opções na parte de baixo da janela. Display SQL Server State in console - Esta opção, se selecionada, faz com que o Entrprise Manager regularmente interrogue o serviço MSSQLServer para saber se ele está rodando, e mostra uma luz verde no ícone no console quando ele está rodando, e uma luz vermelha se o serviço não estiver sendo executado. Show System Databases and System Objects - Se esta opção for escolhida, todos os bancos de dados e objetos do sistema serão mostrados no console. Caso não seja escolhida, os mesmos não aparecem no console. PAGE 87 Automaically Start SQL Server when connecting - Assumindo que o serviço MSSQLServer não esteja ajustado para iniciar automaticamente, esta opção pode ser usada para iniciar automaticamente este serviço quando da primeira conexão com o servidor. Por padrão, as três opções estão escolhidas agora, e são escolhidas automaticamente quando se usa o assistente de registro. Você pode fazer qualquer escolha que achar adequada. Quando você tiver completado suas escolhas, você pode registrar o servidor clicando em OK. Como editar as informações de registro do servidor SQL Server Às vezes, você pode precisar de editar as configurações de registro do SQL Server, como quando você mudar o login ou a senha que você usou originalmente para registrar o servidor. Fazendo mudanças em um servidor registrado No Enterprise Manager, selecione o servidor cujo registro você quer alterar. Clique com o botão direito no nome do servidor e então escolha Edit SQL Server Registration no menu. Isso mostra a caixa de diálogo Registered SQL Server Properties, que foi mostrada na figura acima. Faça quaisquer mudanças necessárias. Quando terminar, clique em OK para salvar essas configurações e voltar para o Enterprise Manager Como cancelar o registro de um servidor De tempos em tempos, pode ser necessário cancelar o registro de um servidor, no Enterprise Manager. Para isso, faça: No Enterprise Manager, selecione o nome do servidor cujo registro você quer cancelado. Clique com o botão direito em seu nome, e selecione Delete do menu. Uma caixa de confirmação aparece, pedindo-lhe para clicar em Yes para remover o servidor, ou No para cancelar a operação. Clique em Yes para cancelar o registro do servidor. Gerenciando grupos de servidores Embora você possa criar novos grupos a partir do assistente de registro, ou a partir da caixa de diálogo Registered SQL Server Properties, você também pode crirar, renomear e excluir grupos de servidores manualmente. Você também pode mudar um servidor de um grupo para outro se você quiser. Para gerenciar os grupos de servidores, faça o seguinte: A partir do Enterprise Manager, clique no sinal de mais perto do cabeçalho Microsoft SQL Servers. Isso mostra todos os grupos de servidores atualmente embaixo dele. Clique com o botão direito no nome Microsoft SQL Server, ou em qualquer grupo de servidores, e então selecione Novo grupo de servidores [New SQL Server Group] do menu. Aparece a caixa de diálogo de Grupos de Servidores. Para criar um novo grupo de servidores, entre com o PAGE 87 que tem a versão errada, desinstale o SQL Server, atualize o NT Server para uma versão aceitável, e então reinstale o SQL Server. Arquivos abertos durante a instalação Durante o processo de instalação, o SQL Server substitui alguns arquivos do NT Server. Se algum desses arquivos estiver aberto durante a instalação, eles podem causar a exibição de uma mensagem de erro crítico. Essa é a razão de ser importante cetificar-se de que não há nenhum outro programa rodando quando o SQL Server for instalado. Se você descobrir que tem um ou mais utilitários do NT aberto que pode estar causando o erro, feche-os, e clique no botão de Retry mostrado pela mensagem de erro. Se isso não funcionar, você pode ter que abortar a instalação do SQL Server e tentar de novo, desta vez sem nenhum programa rodando. Os serviços MSSQLServer ou SQLServerAgent não iniciam Este é provavelmente o problema mais comum encontrado quando se instala o SQL Server. Siga os passos abaixo para te ajudar a determinar a possível causa desse problema: Você criou uma conta de serviço como descrito na instalação do software de servidor? A conta de serviço foi criada adequadamente, com direitos administrativos e os outros direitos avançados exigidos? A conta de serviço foi criada no domínio de contas correto do NT? A conta de serviço foi informada corretamente quando pedida durante o processo de instalação? Você usou acidentalmente sua conta de logon on NT como a conta de serviço? Você digitou tudo corretamente? Se você não conseguir descobrir o problema, delete a conta de serviço que você criou e crie uma nova, seguindo cuidadosamente as recomendações da instalação do software de servidor. Então vá para o Painel de Controle, onde estão os serviços, e asegure-se de que você selecionou a conta de servço para os dois serviços, junto com as senhas corretas. Com frequência, esse é um erro simples que é facilmente corrigido. PAGE 87 3 - Ferramentas de gerenciamento do SQL Server MMC - Microsoft Management Console Enterprise Manager Service Manager Client Network Utility Server Network Utility Performance Monitor Pofiler Query Analyzer Books online Assistentes do SQL Server Objetivos: - Conhecer os conceitos de alocação de espaço usados pelo SQL Server; - Ter uma visão geral dos itens que compõem o catálogo do sistema; - Saber o que é um banco de dados e o que ele contém; - Aprender a criar, usar e gerenciar dispositivos de banco de dados. SQL Server Enterprise Manager PAGE 87 O "SQL Server Enterprise Manager" é a porta de entrada para a Interface de usuário do SQL Server. Para iniciá-lo, selecione Iniciar, Programas, Microsoft SQL Server 7.0, Enterprise Manager. Aparece o Enterprise Manager dentro do MMC, como abaixo. Aí temos uma porção de menus e botões. Os itens de menu importantes são Action, View e Tools: Action te permite fazer coisas tais como registrar um novo servidor ou um novo grupo (conforme visto na seção de instalação). Views te fornece uma lista dos diferentes tipos de visões disponíveis para você. Você pode selecionar as visões grande, pequeno, detalhe ou lista dos ícones e suas propriedades associadas. Ainda é possível definir quais itens e quais barras de ferramentas você verá. Exatamente como no Windows Explorer. O menu Tools lista todas as ferramentas e assistentes do SQL Server. Você pode fazer backup de um banco de dados; parar, iniciar e configurar a replicação; e iniciar ferramentas como o Query Analyzer (Analisador de consultas), entre outras. Imediatamente à direita dos menus há outros itens de barras de ferramentas. Estes são basicamente atalhos para os itens mais usados da barra de menu. Temos, entre outros: Anterior Próximo Atualizar Registrar Servidor Novo Banco de Dados Novo Login Query Designer O SQL Server 7.0 tem uma ferramenta muito útil, que se parece com o Query By Example (QBE) do Microsoft Access, e é um ótimo substituto para a MS Query (do SQL Server 6.5). O nome dessa aplicação é Query Designer e faz parte das Ferramentas Visuais de Banco de Dados. É uma ótima ferramenta, mas não está listada como uma ferramenta do SQL Server, e é um pouco difícil achá-la diretamente. Para localizá-la, faça assim: Do Enterprise Manager, expanda o banco de dados Northwind, e expanda as tabelas. Clique com o botão direito na tabela Categories. Selecione Open Table, e então Return All Rows. PAGE 87 Para executar a Client Network Utility, clique em Iniciar | Programas | Microsoft SQL Server 7.0 | Client Network Utility. Aparece a janela da Client Network Utility. Essa ferramenta inclui três guias que separam cada uma das três opções principais. Elas são General, Netowrk- Libraries, e DB-Library Options. A seguir descreveremos cada uma delas. Geral A guia geral (figura acima) tem duas seções. Na parte superior da tela você pode especificar qual Net-Library você quer usar como o protocolo padrão de rede para este cliente. A segunda parte da tela é utilizada para especificar configurações opcionais do protocolo de rede/ Como você deve se lembrar, quando o SQL Server foi instalado, você teve que especificar uma ou mais Net-Libraries para serem instaladas. Este é o software utilizado para estabelecer uma conexão de rede entre o servidor SQL Server e o software de cliente. O SQL Server usa as bibliotecas de rede [Net-Libraries] para se comunicar com um protocolo de rede específico e enviar pacotes através da rede entre um cliente e um servidor. O servidor escuta simultaneamente em diversas portas, enquanto o cliente se comunica com o servidor usando uma Net-Library específica. Para que um cliente se conecte a um servidor, ele deve usar alguma das Net-Libraries que o servidor tem instaladas. Você pode fazer com que cliente e servidor usem a mesma Net-Library de duas maneiras: adicionar no cliente, uma Net-Library que está instalada no servidor; ou o PAGE 87 contrário: no cliente, instalar uma Net-Library que esteja instalada no servidor. Normlamente, é mais fácil adicionar a Net-Library ao servidor, do que aos clientes. A configuração de uma Net-Library no cliente, para se comunicar com um servidor, é opcional. Por padrão, Named Pipes é a Net-Library dos clientes, instalada durante a instalação do SQL Server para computadores executando Windows NT ou Windows 9x. Named Pipes deve funcionar bem na maioria dos casos. Mas, se esse protocolo não conectar-se com seu servidor, você vai precisar de reconfigurar o cliente com a configuração correta. Então, caso você precise mudar o protocolo de rede para uma estação de trabalho (cliente), você pode fazer isso selecionando o protocolo apropriado da lista Protocolo de rede padrão [Default network Protocol]. A Net-Library de cliente padrão para os clientes SQL Server fazendo conexões remotas é Named Pipes, a qual não é suportada em servidores rodando Windows 9x. Clientes conectando-se com servidores rodando Windows 9x devem usar a ferramenta SQL Server Client Network Utility para executar uma das seguintes opções: Mudar a Net-Library padrão do cliente. Definir uma entrada de configuração para uma Net-Library de cliente na qual o servidor rodando Windows 9x esteja escutando. A parte de configuração do protocolo de rede da guia Geral [General] só é usada em casos especiais. Você só vai utilizá-la se se ver em uma das seguintes situações: As ferramentas de gerenciamento esrão em uma estação de trabalho rodando Windows NT, conectando-se a um servidor executando Windows 95. Você precisa adicionar uma configuração exclusiva de protocolo para as comunicações entre um servidor SQL Server específico e um cliente executando as ferramentas de gerenciamento. O servidor SQL Server com o qual você quer se comunicar a partir de um cliente escuta em uma oprta não-padrão. Normalmente, você não usará esta opção. Nota: Para o processo Servidor, o SQL Server escuta as Net-Libraries Named Pipes, sockets TCP/IP, e Mutliprotocolo em computadores rodando Windows NT. Entretanto, Named Pipes não é aceito em commputadores rodando Windows 9x. O SQL Server instalado em computadores rodando Windows 9x escuta as Net-Libraries sockets TCP/ IP e Mutliprotocolo do servidor. Se a conexão é local com o servidor (tal como um cliente e servidor na mesma máquina), o SQL Server vai escutar então a Net-Library de Memória Compartilhada do servidor. PAGE 87 Network Libaries A guia Network Libraries é usada somente para mostrar quais Network Libraries estão atualmente instaladas no cliente e permitir que você saiba suas versões. Essa guia se parece com a figura abaixo. DB-Library Options O principal objetivo da guia DB-Librarey é lhe permitir determinar se você tem ou não a versão mais atual dos arquivos de DB-Library instalados no cliente. Outra parte da guia DB-Library Options é formada pelas duas caixas de verificação que podem ser usadas para configurar como a DB-Library se comunica com o SQL Server. Eis o que elas fazem: Automatic ANSI to OEM: Quando esta opção estiver selecionada, a DB-Library converte caracateres do formato OEM para ANSI quando ocorre a comunicação do cliente para o servidor SQL Server, e converte caracteres do formato ANSI para OEM quando se comunica do servidor para o cliente. Esta opção é exigida frequentemente poruqe o conjunto de caracteres utilizado pelo SQL Server é diferente daquele utilizado pelo sistema operacional do cliente. Esta opção faz automaticamente a tradução adequada entre os dois conjuntos de caracteres. Essa opção deve estar selecionada se o cliente estiver executando Windows NT ou Windows 9x. Se estiver sendo utilizado um cliente Windows 3.x, esta opção não deve ser selecionada. Use International Settings: Quando esta opção estiver selecionada, permite-se que a DB-Library pegue as configurações de formato de data, hora e moeda do sistema operacional local ao invés de utilizar a configuração definida no código do SQL Server. Esta opção deve ser selecionada se o cliente estiver sendo executado no Windows 9x ou NT. SQL Server Profiler O SQL Server Profiler é uma ótima ferramenta para se ver um registro contínuo da atividade do servidor em tempo real. O Profiler monitora os eventos produzidos através do SQL Server, filtra esses eventos baseados em critérios específicos do usuário, e mostra a saída traçada na tela, em um arquivo ou uma tabela.. Você pode até repetir traçados capturados anteriormente. Monitorando com o SQL Server Profiler O SQL Server Profiler é uma ferramenta gráfica que permite aos adminsitradores do sistema monitor eventos de mecanismo do SQL Server. Eventos são a nova maneira de se comunicar com e do SQL Server. Com eventos de mecanismo, um objeto COM pode interceptar esses eventos e agir de acordo. Exemplos de eventos de mecanismo incluem: PAGE 87 figura abaixo mostra o resultado em uma grade. Plano de execução (Ctrl+L), mostrado na próxima figra, mostra o processo real de execução que ocorreu. Essa consulta não mostrou nada de interessante porque só havia uma tabela envolvida, mas se fosse executada uma consulta mais complexa com junções internas ou externas, você visualizaria sua representação gráifca. Análise de Índice [Index Analysis] provavelmente lhe avisará que ele foi incapaz de recomendar quaisquer índices. Entretanto, se você começar a escrever consultas complexas que são usadas frequentemente, você pode colá-las nesse utilitário e testá-las para sugestões de índice. Quando você decide fazer uma nova consulta, você pode fazê-la em outra janela, clicando no botão New Quey (Ctrl+N), ou então apagar a consulta já feita e digitar novos comandos. Note que a cada nova janela aberta, ou seja, a cada consulta feita em outra janela, está sendo estabelecida uma nova conexão. Observe na parte inferior da janela do Query Analyzer (ao lado de Connections), quantas são as conexões estabelecidas. Durante a instalação, se você optou por licenciar o SQL Server como Per Server, seu servidor só suportará tantas conexões simultâneas quantas houverem sido definidas nessa fase da instalação. Então, se você receber uma mensagem como a mostrada abaixo você deve fechar algumas conexões (janelas de consulta) antes de tentar abrir alguma nova, ou então, no menu File | Configure, deve definir o número máximo de conexões aceitas, na opção número máximo de conexões (Maximum number of connections). SQL Server Books Online PAGE 87 O SQL Server Books Online é um grande recuro para ter em mãos. O guia de ajuda MS books online está se tornando o modo pardrão de acessar a ajuda com aplicações, serviços e linguagens de progrmação Microsoft. Os livros online são um lugar onde você vai encontrar tudo a respeito de um produto particular, e em alguns casos, a combinação de vários produtos. Books Online tem uma navegação simples, como mostrado abaixo. O books online lembra o MMC ou o WIndows Explorer. O lado esquerdo tem uma visão de estrutura de árvore enquanto o lado direito tem um IE (navegador Internet Explorer). As páginas mostradas no lado direito são simples páginas HTML (você pode inclusive visuzalizar seu código fonte). Procura por conteúdo [Contents] Uma busca por conteúdo é como procurar em um livro baseado no sumário dos capítulos. O sumário do capítulo é visível como uma estrutura de árvore. Clicar em um livro no lado esquerdo da janela causa a abertura do livro revelando páginas, ou capítulos. Clique em uma página e a página será exibida na parte direita da janela. Clicar em um capítulo (que se parece com um outro livro) vai abrir mais capítulos, e mais páginas do lado esquerdo. Procura por índice [Index] A procura pelo índice vai pesquisar todas as palavras que foram indexadas quando da criação do material de ajuda. Ocasionalmente, você pode não encontrar o item que você está procurarndo e precisará de uma procura mais geral. Use a guia Pesquisar [Search] para pesquisas mais gerais. Usando a guia Pesquisar [Search] A guia de consulta permite que você digite uma palavra e será pesquisado em todos os documentos atrás daquela palavra. O lado esquerdo da tela vai ser preenchido com os documentos que contém a(s) palavra(s) que você pediu. Guia Favoritos [Favorites] A guia favoritos é um livro de marcadores bem fácil de se usar. Se você gostou da informação que você encontrou e quer torná-las mias fácil de ser encontrada posteriormente, simplesmente selecione a guia Favoritos. A parte inferior da guia vai mostrar-lhe o tópico atual. Clique em Add para colocá-lo como parte do seu marcador. Se você precisar de excluir um item, simplesmente selecione-o e aperte o botão Remove. Se você está inseguro a respeito de como algumas das ferramentas funcionam, ou apenas esqueceu, lembre-se de que os assistentes são ótimas ferramentas para o aprendizado. Eles fazem um trabalho excelente de apontar as tarefas necessárias que estão sendo realizadas. Depois de executar os assistents algumas vezes, você terá uma boa idéia do processo como um todo. Mesmo que você não tenha, use esta apostila ou os livros on-line. PAGE 87 Asistentes do SQL Server [SQL Server Wizards] Os assistentes do SQL Server te ajudam a crirar seus objetos de banco de dados e serviços sem precisar de estar sempre olhando em suas notas sobre como fazer algo corretamente. Ter um assistente para te encaminhar em cada tarefa é uma maneira ótima de se aprender o que necessita ser feito. Quase tudo tem um assistente. Você já deve alguma vez ter evitado uma certa tarefa só porque você não tinha tempo para pesquisar como realizá-la. Como você deve saber, a não ser que você conheça o procedimento completamente, você cometerá algum erro ao realizá-lo. Seu tempo já é bem escasso sem ter que se recuperar de erros. Se você não estiver certo do que você está fazendo, ou se você está fazendo certo, deixe o assistente ser seu guia. Alguns desses assistentes são simples, enquanto outros são mais complexos. Todos os assistentes estão disponíveis no Enterprise Manager. Para ver uma lista dos assistentes disponíveis, selecione algum servidor, e no menu Ferramentas [Tools] do Enterprise Manager, escolha a opção Assistentes [Wizards]. Aparece a janela mostrada abaixo: Aqui serão discutidos alguns assistentes e os passos principais para o assistenete, dando o máximo de detalhe possível, mas sem exagerar. Bem, assistenstes estão aí pra te ajudar, e supõe-se que eles tornem as tarefas difíceis mais fáceis. Então, vamos começar. Assistente de registro de servidor [Register Server Wizard] O Assistente de registro de servidor obviamente, registra seu servidor. O ato de registrar o seu servidor é o processo de contar ao SQL Server o nome do servidor que você quer registrar, o tipo de segurança que você está utilizando, seu nome de login e senha (se não estiver usando autenticação do NT), e o grupo de servidor do qual esse servidor vai fazer parte. Você já deve ter utilizado esse assistente em Registrando um servidor. Você pode criar um novo grupo de servidor quando da criação de um novo banco de dados. Um servidor somente pode existir como parte de um grupo. Assistente de segurança [Security Wizard] O assistente de segurança automatiza a tarefa de criação de logins para um servidor SQL Server. O assistente te permite especificar ou uma conta de usuário do NT ou criar uma autenticação do SQL Server. Veja mais sobre segurança. PAGE 87 4 - Fundamentos de arquitetura do SQL Server O Catálogo do Sistema Componentes do Banco de Dados Estrutura dos bancos de dados Objetivos: - Conhecer os conceitos de alocação de espaço usados pelo SQL Server; - Ter uma visão geral dos itens que compõem o catálogo do sistema; - Saber o que é um banco de dados e o que ele contém. O Catálogo do Sistema Um banco de dados é uma coleção de tabelas e outros objetos relacionados. Existem dois tipos de banco de dados: os bancos de dados do sistema são usados pelo SQL Server para operar e gerenciar o sistema e os bancos de dados do usuário são usados para armazenar os seus próprios dados. O catálogo do sistema é composto de tabelas no banco de dados master. Bancos de Dados do Sistema Ao instalar o SQL Server, são criados os seguintes bancos de dados do sistema: master Controla os bancos de dados do usuário e a operação do SQL Server. Tem como tamanho inicial 16 MB. É importante manter um backup atualizado desse banco de dados. Contém informações sobre: - Contas de login - Processos em execução - Mensagens de erro - Bancos de dados criados no servidor - Espaço alocado para cada banco de dados - Travas [locks] de linha ativas - Espaço alocado para cada banco de dados - Procedimentos armazenados do sistema model É um modelo usado para criação de novos bancos de dados, que pode ser usado para definir padrões, como autorizações default de usuário, opções de configuração, tipos de dados etc. Sempre que um banco de dados do usuário é criado, o conteúdo de model é copiado para ele. Seu tamanho inicial é 2.5 MB. Esse modelo pode ser alterado. tempdb Usado para armazenar tabelas temporárias e resultados intermediários de consultas. Geralmente o seu conteúdo é excluído sempre que um usuário se desconecta. Ele cresce automaticamente confome é necessário. Seu tamanho inicial é de 8 Mb. msdb Usado pelo serviço SQLServerAgent, para controlar tarefas como replicação, agendamento de tarefas, backups e alertas. Contém algumas tabelas de sistema, que armazenam informações usadas pelo SQLExecutive.Seu tamanho inicial é 12 Mb. PAGE 87 Tabelas do Sistema As tabelas do sistema, armazenadas no banco de dados master e em cada banco de dados de usuário, contêm informações sobre o SQL Server e sobre cada banco de dados de usuário. Existem 17 tabelas em cada banco de dados que formam o catálogo do banco de dados. Todas começam com o prefixo sys e contém as seguintes informações: syscolumns Informação sobre cada coluna de cada tabela, e cada parâmetro de procedimento. syscomments Para cada objeto de banco de dados (visão, regra, default, trigger, procedimento) contém o texto de sua definição. sysconstraints Inclui informações sobre todas as restrições usadas no banco de dados. sysdepends Registra as dependências entre objetos do banco de dados. sysfilegroups Tem uma linha para cada grupo de arquivos armazenado em um banco de dados. sysfiles Informações sobre cada arquivo de um banco de dados. sysforeignkeys Informações sobre todas as restrições de chaves estrangeiras encontradas em todas as tabelas de um banco de dados. sysfulltextcatatalogs Lista todos os catálogos de texto completo para esse banco de dados. sysindexes Informação para cada índice criado e para cada tabela sem índices, além de informações para cada tabela que possui colunas text ou image. sysindexkeys Informação sobreas chaves e as colunas de um índice. sysmembers Informações sobre os membros de cada papel. sysobjects Informação sobre cada objeto do banco de dados (tabelas, visões, procedimentos, regras, defaults e gatilhos). syspermissions Informação sobre permissões atribuídas a usuários, grupos e papéis em um banco de dados. sysprotects Permissões atribuídas à contas de segurança. sysreferences Informação sobre toda restrição de integridade referencial usada numa coluna ou tabela de um banco de dados. systypes Informação sobre cada tipo de dados (do sistema ou definido pelo usuário). sysusers Informação sobre cada usuário que pode ter acesso ao banco de dados. Existem também tabelas localizadas apenas no banco de dados master, que compõem o catálogo do sistema. Elas contêm as seguintes informações: sysallocations Informações sobre cada unidade de alocação gerenciada pelo SQL Server sysaltfiles Informações sobre cada arquivo gerenciado pelo SQL Server syscharsets Informação sobre conjuntos de caracteres [character sets] e ordens de classificação [sort orders]. PAGE 87 sysconfigures, syscurconfigs Parâmetros de configuração do SQL Server. sysdatabases Informação sobre os bancos de dados existentes. sysdevices Informação sobre os dispositivos, tais como o dispositivo de fita. syslanguages Idiomas suportados pelo servidor. syslockinfo Travas (locks) ativas. syslogins Contas de login. sysmessages Mensagens de erro do sistema sysoledbusers Contém uma linha para cada usuário e senha mapeados em um servidor. sysperfinfo Informação sobre os monitores de performance. sysprocesses Processos em execução sysremotelogins Contas de login remotas. sysservers Servidores remotos conhecidos. Procedimentos Armazenados do Sistema Um procedimento armazenado [stored procedure] é uma seqüência de comandos da linguagem Transact-SQL, compilados e armazenados num banco de dados. Os procedimentos armazenados do sistema [system stored procedures] são fornecidos pelo SQL Server, armazenados no banco de dados master e automatizam várias tarefas comuns de gerenciamento. Por exemplo, o procedimento sp_databases mostra quais os nomes de bancos de dados existentes. Para executar esse procedimento, use o Query Analyzer (Iniciar | Programas | Microsoft SQL Server 7.0 | Query Analyzer). Na página "Query" digite: sp_databases E clique no botão Execute. Ele mostra um resultado como: DATABASE_NAME ------------------- master model msdb pubs tempdb DATABASE_SIZE --------------- 17408 1024 8192 3072 2048 REMARKS -------------------- (null) (null) (null) (null) (null) (5 row(s) affected) Outro procedimento útil é sp_helpdb. Ele mostra informações sobre um banco de dados. Sintaxe: sp_helpdb [Banco de Dados] Exemplo: sp_helpdb master O resultado será algo como: name --------- master db_size ---------- 17.00 MB owner ------- sa dbid ------ 1 created ------- Apr 3 1996 status ------------------ trunc. log on chkpt. name file filename filegro size maxsiz grow usage PAGE 87 Extents: Um extent tem 64 Kb. Cada objeto de banco de dados (tabelas, índices) ocupa um número inteiro de extents Página [page]: Uma página (8Kb) é a unidade mais básica de armazenamento. Um objeto do banco de dados sempre cresce em páginas e em alguns casos pode ficar fragmentado, disperso em páginas distantes uma da outra. Arquivos predefinidos Ao instalar o SQL Server, são criados quatro bancos de dados, com os seguintes nomes lógicos: MASTER: composto pelos arquivos master.mdf e mastlog.ldf (arquivo primário e de log) MSDB: composto pelos arquivos msdbdata.mdf e mastlog.ldf (arquivo primário e de log, que por sinal é o mesmo arquivo de log do banco de dados master) MODEL: composto pelos arquivos model.mdf e modellog.ldf. TEMPDB: composto pelos arquivos tempdb.mdf e templog.ldf PAGE 87 5 - Criando Bancos de Dados Gerenciando Bancos de Dados Arquivos e grupos de arquivos Criando Tabelas Alterando Estrutura das Tabelas Definindo opções de bancos de dados Considerações para melhor gerenciamento Documentando a criação de bancos de dados Objetivos: - Aprender a gerenciar bancos de dados, criando, alterando ou excluindo-os com o Enterprise Manager ou com comandos SQL; - Aprender a criar tabelas e alterar sua estrutura. Gerenciando Bancos de Dados Você cria um banco de dados [database] definindo o seu nome, nome do arquivo, tamanho inicial, tamanho máximo e taxa de crescimeno. Inicialmente apenas o administrador do sistema (SA) pode criar, modificar o tamanho e excluir os bancos de dados, mas ele pode conceder permissões a outros usuários para isso. Em versões anteriores do SQL Server, havia a a necessidade de criação de dispositivos [devices], e dentro destes deviam ser criados os bancos de dados. Bem, não existem mais dispositivos no SQL Server 7.0. Depois de fazer excluir ou fazer alterações no do banco de dados é recomendável fazer backup do banco de dados master, porque ele contém informações sobre cada banco de dados. Mais especificamente, a tabela de sistema sysdatabases, do banco de dados master, armazena as informações sobre todos os bancos de dados. Mais adiante, discutiremos com mais detalhes as tabelas de sistema. O Log de Transações [Transaction Log] Quando você cria um banco de dados, é criado também um log de transações [transaction log] para esse banco de dados. Esta é uma área reservada onde todas as alterações feitas no banco de dados são registradas. Qualquer comando SQL que modifica os dados registra as alterações antes no log de transações, depois nas tabelas alteradas. Quando é executado um comando que altera os dados (insere, altera ou exclui linhas numa tabela), essa alteração é salva primeiro no log de transações, escrevendo diretamente em disco. Os dados são alterados apenas em memória. Periodicamente, o SQL Server faz um checkpoint, um processo que grava em disco as alterações feitas em memória. (Geralmente um checkpoint é feito uma vez por minuto). O log de transações permite recuperar o banco de dados a um estado consistente, em caso de uma pane no sistema. Sempre que o SQL Server inicia, ele verifica o log de PAGE 87 transações para saber se alguma alteração foi iniciada, mas não salva nos dados. As transações que não foram confirmadas (commited) são canceladas. Pode ser interessante colocar o log fisicamente em um disco diferente dos dados, o que melhora o desempenho, pois as operações de E/S podem ser feitas simultaneamente nos dois. Por padrão, ao se criar um banco de dados, o log de transações é criado com 25% do tamanho do banco de dados. Pode-se mudar o tamanho do mesmo. Recomenda-se alocar para o log de 10 a 25% do tamanho do banco de dados. Criando bancos de dados com o Enterprise Manager Vamos criar um banco de dados com o SQL Enterprise Manager. No SQL Enterprise Manager, conecte-se ao servidor desejado. Clique em "Databases" com o botão direito e selecione New Database... Em "Name" coloque Exemplo. Note que ao definir o nome, o nome do arquivo [File Name] (que não é necessariamente o mesmo nome definido em "Name", apesar de poder ser), muda para o nome que você está digitando seguido de _data. Se você clicar na guia Transaction Logs, verá que o arquivo de log está sendo criado, com o nome do banco de dados seguido de _log, e no caminho definido para o banco de dados. Em "Location", o local no disco onde você quer armazená-lo. Por padrão, o SQL Server define o local como sendo a subpasta \DATA, na pasta de instalação do SQL Server. O tamanho usado, "Size", aparece como 1 Mb por default, substitua esse valor por 10 Mb. O tamanho alocado para o log, por default, é também 1 Mb, como você pode ver clicando na guia Transaction Logs. Mude o tamanho para 2Mb. A opção "Automatically grow file" determina se o arquivo poderá ser expandido à medida que for ficando cheio. Se essa opção estiver marcada, você pode determinar a taxa de crescimento (a cada vez que ele for expandido, será expandido em N% ou N megabytes) do arquivo [File growth] em porcentagem ou megabytes. Também é possível determinar um tamanho limite para o arquivo [Restrict file growth] ou deixá-lo crescer indeterminadamente [Unrestricted file growth]. Por padrão, como se percebe, o banco de dados tem como propriedades crescer automaticamente, em incrementos de10 por cento, e sem limite de crescimento. Clique em Ok e aguarde alguns instantes: o banco de dados será criado, com 10 Mb para os dados e 2 Mb para o log de transações. Nota: O arquivo de banco de dados é gravado com a extensão .mdf ou .ndf, dependendo se ele for um arquivo primário ou não-primário no banco de dados. Veremos isso melhor em Grupos de Arquivos. O arquivo de log é gravado com a extensão .ldf. Nota: Ao ser criado, um banco de dados é uma cópia do banco de dados model. Quaisquer opções ou configurações do banco de dados model são copiadas no novo banco de dados. Criando bancos de dados com comandos SQL Para gerenciar os bancos de dados com comandos SQL é necessário que se esteja posicionado no banco de dados master. Você também pode criar um banco de dados com o comando SQL, CREATE DATABASE. Sintaxe PAGE 87 PAGE 87 [to Na janela que aparece a seguir, você tem algumas opções, que são: Reorganize database: esta opção, se selecionada, faz uma espécie de desfragmentação do banco de dados, agrupando as páginas preenchidas, e deixando as páginas livres no fim do arquivo. Shrink database files: esta opção disponnibiliza o espaço livre que houver no fim do arquivo, para o sistema operacional. Alterando um banco de dados com comandos SQL Para expandir o banco de dados, pode-se usar ALTER DATABASE. Para utilizar este comando, deve-se estar posicionado no banco de dados master: Sintaxe ALTER DATABASE nome_bancodedados MODIFY FILE (NAME = nome_logico_arquivo, SIZE = novo_tamanho ) Onde: nome_bancodedados é o nome do banco de dados que se deseja alterar. nome_logico_arquivo é o nome lógico dado ao arquivo na sua criação. novo_tamanho é o tamanho novo do banco de dados. Esse tamanho é fornecido em MegaBytes. Por exemplo: Vamos fazer o banco de dados aumentar para 12 Mb. Para isso, digite: ALTER DATABASE Exemplo2 MODIFY FILE (NAME = Exemplo2_data, SIZE = 12MB ) Para expandir o log de transações do banco de dados Exemplo2 para 3MB, faça: PAGE 87 ALTER DATABASE Exemplo2 MODIFY FILE (NAME = Exemplo2_log, SIZE = 3MB ) Com o comando SQL ALTER DATABASE, também é possível acrescentar arquivos ao banco de dados. Para isso, usa-se a opção ADD FILE. Vamos adicionar um arquivo secundário ao banco de dados Exemplo2, com 4MB iniciais, e tamanho máximo de 7MB. Veja mais sobre arquivos secundários. ALTER DATABASE Exemplo2 ADD FILE (NAME='Exemplo2_dados2', FILENAME='C:\mssql7\data\Exemplo2.ndf', SIZE=4MB, MAXSIZE=7MB) Para reduzir o tamanho de um banco de dados, usa-se o comando DBCC SHRINKDATABASE. Este comando reduz o tamanho de todos os arquivos de dados no banco de dados mas não diminui o tamanho dos arquivos de log. Sintaxe DBCC SHRINKDATABASE (Nome_BancodeDados ,porcentagem_final [, {NOTRUNCATE | TRUNCATEONLY}] ) Onde: nomebancodedados é o nome do banco de dados que se deseja alterar o tamanho. porcentagem_final é a porcentagem de espaço livre a ser deixada no banco de dados depois que o mesmo for reduzido. NOTRUNCATE faz com que o espaço liberado permaneça nos arquivos de banco de dados. Se não especificado, o espaço liberado é tornado disponível para o sistema operacional. TRUNCATEONLY faz com que o espaço não utilizado em arquivos de dados seja liberado para o sistema operacional e encolhe o arquivo até o último espaço utilizado, reduzindo o tamanho do arquivo sem mover quaisquer dados. Nenhuma tentativa é feita para relocar colunas em páginas não-alocadas. porcentagem_final é ignorado quando TRUNCATEONLY for utilizado. Não se pode diminuir o tamanho do banco de dados para um tamanho menor do que o tamanho mínimo do arquivo, que é espcificado quando o arquivo foi originalmente criado. Nota: O banco de dados não pode ficar menor que o tamanho do banco de dados model. Pode-se também reduzir todo o banco de dados usando o comando DBCC SHRINKFILE. Este comando reduz o tamanho de um arquivo de dados específico em um banco de dados. Sintaxe DBCC SHRINKFILE ({nome_arquivo|id_arquivo}, [novo_tamanho][, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}]) Todas as opções já foram explicadas para o comando DBCC SHRINKDATABASE, com duas exceções: Aqui se especifica o nome do arquivo, e não do banco de dados. O novo tamanho é dado em MB, não em porcentagem como acima. A opção EMPTYFILE migra todos os dados do arquivo especificado para outros arquivos no mesmo grupo de arquivos. O SQL Server não permite mais que dados sejam colocados no arquivo em que foi utilizada a opção EMPTYFILE. Esta opção permite que o arquivo seja excluído com o comando ALTER DATABASE, com a opção REMOVE FILE. N ta: Quando se usa qualquer das opções EMPTYFILE, NOTRUNCATE ou TRUNCATEONLY, não e especific novo tamanho. Como exemplo, vamos reduzir o arquiv secundário do b nco de dados Exe plo2 (Exemplo2.ndf), que chamamos de Exemplo2_Dados2 para 2MB. Para isso, entre com o seguinte comando no Query Analyzer: DBCC SHRINKFILE (Exemplo2_Dados2,2) O banco de dados a ser reduzido não precisa estar em modo de único usuário, outros usuários podem estar trabalhando com o banco de dados quando ele é reduzido. Excluindo um banco dados pelo Enterprise Manager Para excluir um banco de dados no Enterprise Manager, clique no Banco de Dados e com o botão direito , clique em Delete. Confirme a exclusão. Após excluir um banco de dados, não é possível recuperar os dados, a não ser que você tenha feito um backup. Com iremos usar este banco de dados os exemplos posteriores, crie-o novamente com as mesmas características que foi criado anteriormente. Excluindo um banco de dados com comandos SQL Para excluir um banco de dados, usa-se: Sintaxe DROP DATABASE no e_banco edados[, nome_bancodedados...] Onde: nome_bancodedados é o nome do banco de dados que se deseja excluir. Você pode excluir um banco de dados ou múltiplos banco de dados. Exemplo: Para exclui vário banc de dados ao mesmo tempo , usa-se: DROP DATABASE Exemplo, Exemplo2 Se quiséss mos ter excluido somente o banco de dad s Exemplo2, teríamos usado: DROP DATABASE exemplo3 Se executar este comando crie o banco de dados Exemplo novamente, pois iremos usá-los nos exemplos posteriores. rquvos e grupos de arquivos Arquivos e grupos de arquivos são a nova estrutura de armazenamento do SQL Server. Um banco de dad s é armazenado em uma estrutura de arquivos, e então um grupo de arquivos padrão é criado quando você cria seu banco de dados. Outros arquivos podem ser acrescentados ao seu projeto. Estes arquivos podem ser agrupados com base em grupos de arquivos definidos pelo usuário. Na maioria dos casos, você usará apenas o grupo de arquivos padrão, e ter apenas um arquivo para a sua estrutura de banco de dados. Como veremos, entretanto, assim que você estiver familizarizado com o conceito de arquivo e grupo de arquivo, o desempenho pode ser aumentado e a administração tornada mais fácil. O uso de grupos de arquivos é uma técnica avançada de projeto de banco de dados. Você deve compreender a estrutura, transações, consultas, e dados de seu banco de dados profundamente de modo a determinar a melhor maneira de aramazenar tabelas w índices em grupos de arq ivos específicos. Em muitos asos, o uso das capacidades de sistemas RAID (Redundant Array of Inexpensive Disks) fornece quase o mesm g h em desempenho que você poedrá obter com o uso grupos de arquivos sem o encargo administrativo extra de definir e gerenciar grupos de arquivos. Arquivos Como dito anteriormente, o SQL Server cria bancos de dados e logs baseado em uma estrutura de arquivos ao invés da especificação de Dispositivo [Device] de versões anteriores. Isso permite que os arquivos de bancos de dados e de log sejam escalados com maior facilidade. Cada arquivo pode ser usado por apenas um banco de dados. Ele não pode ser compartilhado entre vários bancos de dados. Quando um banco de dados for excluído, seja através de DROP DATABASE ou do Enterprise Manager, o arquivo associado também é excluído. O SQL Server tem três tipos de arquivos: Primário. O arquivo primário é o ponto de partida do banco de dados e aponta para o resto dos arquivos no banco de dados. Todo banco de dados deve ter ao menos um arquivo de dados primário. A extensão padrão e recomendada é .mdf. Secundário. Arquivos de dados secundários são os outros (não-primários) arquivos no banco de dados. Alguns bancos de dados podem não ter quaisquer arquivos s cundários de dados, enquant outros podem ter múlti l s arquivos secundários. A extensão padrão e recomendada é .ndf. Log. Um arquivo de log é uma área de armazenamento para todas as mudanças nos bancos de dados. Tdo banco de dados deve ter pelo menos um arquivo de log. A extensão recomendada é .ldf. Nota: o SQL Server não te força a usar a extensão recomendada para os arquivos. Elas existem simplesmente para te ajudar a gerenciar seus arquivos de bancos de dados. Grupos de arquivos Os arquivos de bancos de dados são agrupados para fins de alocação e administração. Alguns sistemas podem ter seu desempenho aumentado pelo controle do armazenamento de dados e índices em unidades e disco específicas. Grupos de arquivos podem auxiliar nesse processo. O administrador de sistema pode criar grupos PAGE 87 datatypes], predefinidos, ou criar novos tipos de dados, chamados tipos de dados do usuário [user datatypes], baseados nos tipos preexistentes. Os tipos de dados existentes são: Para dados Tipo Tamanho Caractere char(n), varchar(n), nvarchar(n), nchar(n) até n bytes Numérico exato decimal(p,e) ou numeric(p,e) -depende- Numérico aproximado float, real 8, 4 bytes Numérico inteiro int, smallint, tinyint 4, 2, 1 byte Monetário money, smallmoney 8, 4 bytes Data e hora datetime, smalldatetime 8, 4 bytes Binário binary(n), varbinary(n) n bytes Texto e imagens text, image, ntext -variável- Outros bit, timestamp 1 bit, 8 bytes Para dados contendo caracteres, char(n) armazena um número fixo de caracteres. Por exemplo, uma coluna do tipo char(30) tem sempre 30 caracteres. Se forem informados menos, o restante é completado com espaços. Já o tipo varchar(n) armazena uma quantidade variável de caracteres, até o máximo informado. Os tipos nchar(n) e nvarchar(n), armazenam dados Unicode, de comprimento fixo ou variável, e usam o conjunto de caracteres UNICODE UCS-2. Os tipos "numéricos exatos", decimal e numeric, permitem armazenar dados exatos, sem perdas devidas a arredondamento. Ao usar esses tipos, você pode especificar uma precisão, que indica quantos dígitos podem ser usados no total e uma escala, que indica quantos dígitos podem ser usados à direita do ponto. Por exemplo, decimal(9,2) permite guardar 7 dígitos antes do ponto decimal e 2 após, num total de 9, assim o maior valor possível é 9999999,99. Os tipos "numéricos inexatos", float e real, armazenam dados numéricos, mas nem sempre mantém a precisão suficiente para armazenar corretamente números de vários dígitos. O tipo money é usado para valores monetários, ocupando 8 bytes em disco e permitindo valores entre -922.337.203.685.477,5808 e +922.337.203.685.477,5807 (922 trilhões). O tipo smallmoney permite valores entre - 214.748,3648 e +214.748,3647 (214 mil) e ocupa 4 bytes em disco. Dos tipos inteiros, int usa 32 bits (4 bytes), permitindo armazenar até +/-2.147.483.647, smallint usa 16 bits (2 bytes) permitindo +/-32767 e tinyint usa 8 bits (1 byte), permitindo números não-negativos de 0 a 255. O tipo datetime armazena valores contendo a data e hora, com precisão de 1/300 de segundo, entre 1º de janeiro de 1753 e 31 de dezembro de 9999 (o século é sempre armazenado). O tipo smalldatetime ocupa menos espaço e armazena datas e horas de 1º de janeiro de 1900 até 6 de junho de 2079, com precisão de 1 minuto. Tipos binários são usados para dados que o SQL Server não interpreta, por exemplo, o conteúdo de um arquivo binário. O tipo text é usado para colunas com dados "memo", ou seja, com texto de tamanho variável; o tipo ntext armazena dados Unicode de tamanho variável. O tipo image armazena imagens, também de tamanho variável. Os tipos text e ntext, armazenam dados de tamanho variável, mas podem armazenar 1.073.741.823 caracteres, para o caso do ntext, e 2.146.483.647 caracteres para o PAGE 87 caso do tipo text. Enquanto isso, os tipos varchar e nvarchar armazenam "somente" 8000 caracteres (varchar) ou 4000 caracteres (nvarchar) O tipo bit armazena valor 1 ou 0. Uma coluna do tipo timestamp não pode ser alterada pelo usuário. Ela é definida automaticamente com a data e hora atual quando a linha é inserida ou atualizada. Definindo novos tipos de dados Você pode criar seus próprios tipos de dados, para facilitar a padronização, usando o procedimento de sistema sp_addtype ou o Enterprise Manager. Usando o procedimento de sistema sp_addtype: Sintaxe sp_addtype nome_tipo, tipo_dado [, valor_null] Onde: nome_tipo é o nome do tipo de dado que deseja criar. tipo_dado é o tipo de informação que ira conter este tipo criado. Exemplo: char, int,..etc. valor_null identifica se este tipo pode ou não conter valores nulos. Exemplos: No Query Analyzer na lista "DB", selecione o banco de dados "Exemplo". Digite e execute os seguintes comandos: sp_addtype cpf, 'char(11)' go sp_addtype nomepessoa, 'char(50)' go sp_addtype valorgrande, 'numeric(15,2)' go sp_addtype tipooperacao, 'SmallInt', NONULL A palavra reservada go indica final de comando. Com isso, usar o tipo 'cpf', por exemplo, é o mesmo que usar char(11), mas é mais intuitivo e fácil de entender. Se você especificar NONULL no tipo significa que ele não aceita valores nulos. Você pode excluir um tipo com sp_droptype: Sintaxe sp_droptype nome_tipo Onde: nome_tipo é o nome do tipo de dados que deseja excluir. Exemplo: Para executar este exemplo continue posicionado no banco de dados Exemplo. sp_droptype nomepessoa Para criar, alterar ou excluir tipos com o Enterprise Manager, você deve abrir Nome-do- banco-de-dados clique em User Defined Datatypes com o botão direito clique em Refresh (para atualizar os dados ) e com o botão direito clique em New UserDefinedDataType.... Será mostrada a seguinte tela: 'Name ' indica o nome do tipo de dados. 'Data type' é o tipo de informação que irá conter esse tipo criado. 'Length' indica o tamanho do tipo de dado. 'Allow Null' se esta opção estiver marcada indica que o tipo criado aceita valores nulos. PAGE 87 As opções 'Default' e 'Rule' permitem que você selecione uma regra ou um default, se houver algum, e ligue-o ao tipo de dados definido por você. Para apagar algum tipo de dados, selecione-o do lado direito (quando você estiver com User Defined DataTypes selecionado do lado esquerdo do Enterprise Manager). Clique com o botão direito no tipo de dados que você quer excluir, e então selecione a opçao Delete. Apague todos os tipos de dados e crie o tipo de dados Sexo. Em "Name" coloque dmSexo, "Data Type" selecione char, "Length" coloque 1. Mais tarde veremos como restringir o valor de um tipo. Criando uma tabela com o Enterprise Manager Um banco de dados pode ter no máximo 2 bilhões de tabelas e cada tabela pode ter no máximo 1024 colunas. Para criar uma tabela com o Enterprise Manager, abra o banco de dados Exemplo. Dentro dele, selecione o item Tables. Clique em "Tables" com o botão direito e em New Table. Entre com o nome da tabela a ser criada. No caso Cliente; clique em Ok. Entre com os campos da tabela, conforme mostrado abaixo: Veja que no título da janela, aparece o nome do banco de dados em que a tabela está sendo criada (no caso 'exemplo'). As colunas para as quais a opção "Nulls" está marcada permitem o valor NULL, ou seja, podem ser deixados sem preencher ao inserir dados. Já os outros são NOT NULL, ou seja, é obrigatório informar um valor para eles. Note que definimos algumas colunas com o tipo char, como CPF e UF, porque elas geralmente têm tamanho fixo. Já outras como Nome, Cidade e País, geralmente têm tamanho variável, por isso, para economizar espaço no banco de dados, usamos varchar. A coluna Default especifica um valor default que é inserido caso nada tenha sido informado. No caso da data de cadastro, usamos a função getdate(), que retorna a data do dia. No caso do país, o default é a string "Brasil" caso nada seja informado. Agora clique no botão "Save" para salvar a tabela. Nota: Você pode ter um identificador exclusivo em todo o banco de dados, para uma PAGE 87 Exemplos: Drop Table Cliente1 ou Drop Table Exemplo.dbo.cliente1 Alterando a estrutura das tabelas Depois que uma tabela for criada, pode-se mudar várias das opções que foram definidas qunado a tabela foi originalmente criada, incluindo: Colunas podem ser acrescentadas, modificadas ou excluídas. Por exemplo, o nome da coluna, comprimento, tipo de dados, precisão, escala, e o fato de aceitar ou não valores nulos, podem todos ser mudados, embora existam algumas restrições. Restrições PRIMARY KEY e FOREIGN KEY podem ser acrescentadas ou excluídas. Restrições UNIQUE e CHECK e definições DEFAULT podem ser acrescentadas ou excluídas. Uma coluna identificadora pode ser acrescentada ou removida usando a propriedade IDENTIY ou ROWGUIDCOL. A propriedade ROWGUIDCOL também pode ser adicionada ou removida de uma coluna existente, embora apenas uma coluna em uma tabela possa ter a propriedade ROWGUIDCOL de cada vez. O nome ou o dono de uma tabela também podem ser modificados. Quando você faz isso, também deve-se mudar o nome da tabela em quaisquer gatilhos, procedimentos armazenados, scripts SQL, ou outro código de programação que utilize o nome ou proprietário antigo da tabela. Nota: É importante considerar que a mudança de tipo de dados em uma coluna pode causar truncamento dos dados, ou mesmo ser impossível de ser feita (por exemplo, se você quiser converter um tipo char para um tipo inteiro e já houver valores não- numéricos armazenados nessa coluna). Alterando a tabela com o Enterprise Manager Essas modificações podem ser feitas no Enterprise Manager. Por exemplo, clique na tabela "Cliente" (dentro de "Exemplo\Tables", as tabelas do banco de dados Exemplo aparecerão do lado direito do Enterprise Manager) com o botão direito e clique em Design Table. No final da lista de colunas, acrescente uma nova coluna, com o nome "Idade", do tipo "tinyint" (idades não serão maiores que 255). Note que quando você adiciona uma nova coluna, a opção "Allow Nulls" deve ficar marcada. Altere o comprimento de Cidade para 30. Também clique na coluna "UF" e altere o nome para "Estado". Após fazer isso, clique no botão "Save" para atualizar a tabela. PAGE 87 Alterando a tabela com comandos SQL Também é possível alterar uma tabela com comandos SQL. Para isso, use o comando ALTER TABLE. Abaixo será mostrada uma sintaxe simples deste procedimento: Sintaxe: ALTER TABLE [banco_dados.[owner.]]nome_tabela { [ALTER COLUMN nome_coluna {novo_tipo_de_dados [(precisão[, escala])] | ADD {nome_coluna dados_coluna | [WITH CHECK | WITH NOCHECK]} Onde: banco_dados é o nome do banco de dados a que a tabela pertence. Essa opção é opcional, ela será usada somente quando se estiver posicionado num determinado banco de dados se e deseja excluir a tabela de outro banco de dados. nome_tabela é o nome da tabela que deseja alterar. nome_coluna é a coluna que se quer alterar. novo_tipo_de_dados é o tipo de dados que a coluna aceitará a partir de agora. WITH CHECK | WITH NOCHECK Especificam se os dados na tabela devem ou não ser validados contra uma nova ou reabilitada restrição FOREIGN KEY ou CHECK. Se não especificada, assume-se WITH CHECK para novas restrições e WITH NOCHECK para restrições reabilitadas. Veja mais sobre restrições. Exemplo: ALTER TABLE Cliente ADD ender varchar(50) NULL GO ALTER TABLE Cliente ALTER COLUMN CIDADE VARCHAR (25) Para renomear uma coluna, usa-se o procedimento sp_rename: sp_rename 'Cliente.ender', Endereco Nota: Perceba que ao executar o comando acima, você recebe um aviso que diz: "Cuidado: Mudar qualquer parte do nome de um objeto pode invalidar scripts e procedimentos armazenados. PAGE 87 Criando um "Script" das tabelas Algumas tarefas são mais fáceis de fazer com os comandos CREATE TABLE. Por exemplo, para recriar um banco de dados em outro servidor, você pode salvar um arquivo (um script) contendo todos os comandos SQL CREATE TABLE usados para criar suas tabelas. Um script em geral é um arquivo contendo comandos SQL. Se você não usou um comando SQL, pode fazer o próprio SQL Server gerar um script para você a partir da tabela existente. Para isso, no Enterprise Manager, clique no nome da tabela com o botão direito, e em "All tasks", e depois em "Generate SQL Scripts". Por enquanto, deixe as opções default. Clique em "Preview" para ver como ficam os comandos. Depois clique em "Save As..." para salvar o arquivo Script. Salve o arquivo com o nome Cliente (a terminaçao .SQL já é colocada por padrão). Feche as janelas. Para executar esse script em outro servidor ou outro banco de dados, basta abrir o SQL Query Analyzer (Iniciar | Programas | Microsoft SQL Server 7.0 | Query Analyzer), abrir o arquivo de script e executá-lo. Para abrir o arquivo Script clique em e procure o nome do arquivo. Note que você pode também modificar os comandos do script para criar tabelas com colunas ligeiramente diferentes. Também é possível criar um script com todas as tabelas do banco de dados, ou com todos os objetos. Para isso, dê uma olhada em "Documentando a criação de bancos de dados" (veremos outros tipos de objetos mais tarde). Definindo opções de bancos de dados Uma porção de opções de bancos de dados podem ser definidas para cada banco de dados. Apenas o Administrador de Sistema (SA) ou o proprietário do banco de dados pode mudar estas opções. A mudança destas opções só modificará o banco de dados atual; não afetará outros bancos de dados. As opções de bancos de dados podem serm modificadas com o procedimento armazenado de sistema sp_dboption, ou através do Enterprise Manager. O procedimento armazenado sp_dboption só afeta o banco de dados atual, mas para modificar opções a nível de servidor, use o procedimento armazenado de sistema sp_configure. Depois de fazer alguma mudança, é emitido automaticamente um checkpoint, de modo que as mudanças são imediatas. Opções disponíveis PAGE 87 Verificando propriedades do banco de dados A seguir você vê alguns procedimentos armazenados de sistema, frequentemente utilizados, que exibem informações sobre bancos de dados e opções de bancos de dados. sp_dboption: como visto acima, mostra todas as opções disponíveis para o banco de dados em que se estiver posicionado. sp_helpdb: informações sobre todos bancos de dados em um servidor. Fornece nome do banco de dados, tamanho, proprietário, ID, data de criação, e opções. sp_helpdb nome_banco_de_dados: informações sobre um banco de dados específico apenas. Fornece nome do banco de dados, tamanho, proprietário, ID, data de criação, e opções. Além disso, lista os arquivos para dados e log de transações. sp_spaceused [nome_objeto]: resumo do espaço de armazenamento que um banco de dados, log de transações, ou objeto de banco de dados utiliza. Considerações para melhor gerenciamento Para que você possa trabalhar com mais tranquilidade e eficiência com bancos de dados, considere os seguintes fatos. Para obter melhor desempenho e segurança, aramazene o banco de dados e o log de transações em discos físicos separados. Desabilite o cache de escrita nos controladores de disco, a menos que o mecanismo de cache de escrita seja especificamente projetado para servidores de bancos de dados. Faça backup do banco de dados master imdediatamente depois de cirar ou modificar bancos de dados. Em geral, é uma boa idéia fazer backup dos bancos de dados regularmente. Garanta que você tenha espaço suficiente para o log de transações. Se você ficar sem espaço, você não será cpaaz de modificar ou acessar seu banco de dados. Para evitar ficar sem espaço, faça o seguinte: Aloque espaço suficiente para acomodar o crescimento. Monitore frequentemente o espaço total sendo usado. Use a opção de crescimento automático para aumentar o espaço em disco automaticamente. Configure um alerta para te avisar quando o espaço disponível no log de transações esteja abaixo de 25 por cento do espaço total do log de transações. Exclusão de bancos de dados Você não pode excluir bancos de dados que estejam: Atualmente aabertos para leitura ou escrita por outro usuário. Sendo restaurados. Publicando qualquer de suas tabelas (parte da replicação SQL). Você também não pode excluir os seguintes bancos de dados: Master Model Tempdb PAGE 87 Embora lhe seja permitido excluir o banco de dados de sistema msdb, você não deve excluí-lo se usa ou pretende usar: Replicação SQL Server Agent Assistente de criação de páginas Web Histórico de backups Serviços de transformação de dados Quando excluir um banco de dados, considere os seguintes fatos: Com o método SQL DROP DATABASE, você pode excluir vários bancos de dados de uma vez. O Enterprise Manager só lhe permite excluir um banco de dados de cada vez. Depois que você excluir um banco de dados, qualquer ID de login que usava o banco de dados excluído como seu banco de dados padrão, usará agora o banco de dados master. Você deve SEMPRE fazer backup do banco de dados master, sempre que qualquer novo banco de dados for adicionado ou excluído. Documentação dos passos de criação de bancos de dados no SQL Server Documentar os passos de criação de bancos de dados SQL Server pode ser útil por diversas razões, mas é claro que a principal e mais motivadora é o fato de ter um back up do trabalho que você fez. Isso não necessariamente vai lhe prevenir de perdas de dados, mas vai salvar seu modelo, e um modelo de banco de dados é uma coisa terrível a se perder. O SQL Server tem um gerador de script que torna fácil para você documentar, e se necessário reconstruir, seu banco de dados. O gerador de scripts pode construir o banco de dados e os objetos criados no banco de dados. Você tem a opção de selecionar desde todos até um único objeto. Você pode pegar um script de um banco de dados e rodá-lo em outro para criar cópias exatas de procedimentos armazenados, regras, gatilhos, etc. Você pode gerar scripts para os seguintes objetos: Tabelas [Tables] Procedimentos armazenados [Stored procedures] Gatilhos [Triggers] Índices [Indexes] Visões [Views] Usuários e Grupos [Users and Groups] Tipos de dados definidos pelo usuário [User-defined data types] Logins Regras [Rules] Default Tabelas-chave / DRI O esquema pode ser salvo em um arquivo único ou você pode querer dividí-lo baseado em objetos. Independentemente do seu método, você não tgem mais uma boa desculpa para um banco de dados não documentado. PAGE 87 Gerando um script a partir do Enterprise Manager Expanda o grupo de servidores. Expanda o servidor. Expanda os bancos de dados. Clique com o botão direito no banco de dados escolhido, e selecione All Tasks. Selecione Gerar Scripts SQL [Generate SQL Scripts], como indicado abaixo. Selecione os objetos que você deseja criar da janela que aparece a seguir, mostrada abaixo: Você pode prever o arquivo primeiro ou simplesmente clicar em OK para salvá-lo em um arquivo. PAGE 87 Você também pode mudar o cabeçalho das colunas retornadas, criando um alias de coluna. Execute o seguinte comando: select au_id Identif, au_fname Nome, au_lname Sobrenome from authors O resultado será o mesmo do comando anterior, mas a coluna 'au_id' aparece como Identif, 'au_fname' como Nome etc. A palavra reservada as pode ser utilizada para indicar um alias, mas é opcional. Por exemplo: select au_id as Identif, au_fname as Nome, au_lname as Sobrenome from authors Usando Condições Os comandos que já usamos não têm a cláusula WHERE. Nesse caso, todas as linhas da tabela são retornadas. Se o WHERE estiver presente, ele especifica uma condição que seleciona as linhas, e apenas as que satisfazem essa condição serão mostradas. Por exemplo, se quisermos os autores que moram na Califórnia, podemos consultar as linhas cuja coluna 'state' (estado) tem o valor 'CA': select au_fname, au_lname, city, state from authors where state='CA' O resultado será: Note que o resultad o mostra apenas 15 linhas (15 rows affected ) e não 23, que é o total da tabela. As linhas que aparecem são apenas as que satisfazem a consulta. Existem vários tipos de condições de pesquisa, como veremos. Manipulando expressões Um comando SELECT pode retornar nas colunas de resultado uma coluna da tabela, PAGE 87 ou um valor calculado. Por exemplo, a tabela titles contém os títulos de livro (title) e os preços de cada um (price). Se quisermos ver como fica o preço de cada um após um aumento de 10%, pode ser feito o seguinte: select price Preço , (price * 1.1) "Preço com 10% de aumento", title from titles Note que "Preço com 10% de aumento" é o nome do cabeçalho da expressão (price * 1.1), como o nome colocado possui espaços, foi necessário coloca-lo entre aspas. Ou seja, a segunda coluna , cujo nome é "Preço com 10% de aumento " mostra o resultado de price * 1.1 para cada linha. Você pode também usar vários operadores em expressões com colunas numéricas: adição (+), subtração (-), multiplicação (*), divisão (/) e módulo (%). O módulo só pode ser usado com tipos inteiros e calcula o resto da divisão de dois números inteiros (Ex.: 13 % 4 = 1). Funções matemáticas Além de operadores, você pode usar funções matemáticas do SQL Server, por exemplo: ABS(valor) retorna o valor absoluto (sem sinal) de um item. POWER(valor,p) retorna o valor elevado à potência p. ROUND(valor,n) arredonda o valor para n casas decimais. SQRT (valor) retorna a raiz quadrada do valor especificado. PI valor constante 3.141592563589793 Para outras funções, consulte o help do Transact-SQL em 'Math functions'. Por exemplo, para arredondar o valor do preço de cada livro para duas casas decimais, pode ser feito o seguinte: Select price Preço , ROUND(price, 1) "Preço com 1 casa decimal", title Título from titles O resultado será: Funções de caracteres Você pode usar funções para manipular dados do tipo caracter (char ou varchar), por exemplo, para pegar uma sub-string de uma seqüência de caracteres. E você pode usar o operador + para concatenar dois valores de tipo caracter. Por exemplo, digite o seguinte comando: select au_fname + ' ' + au_lname 'Nome completo', city + ', ' + state 'Cidade' from authors PAGE 87 O resultado será: O que fizemos foi concate nar o primeiro nome e segund o nome do autor, inserind o um espaço no meio (au_fname + ' ' + au_lname), para gerar a coluna Nome completo e depois juntar o nome da cidade com o nome do estado, inserindo uma vírgula (city + ', '+state). Existem várias funções de manipulação de strings que podem ser usadas para outras tarefas, por exemplo: ASCII(caractere) retorna o código ASCII de um caractere. CHAR(inteiro) retorna o caractere, dado o seu código ASCII LOWER(expr) converte para minúsculas UPPER(expr) converte para maiúsculas LTRIM(expr) retira espaços à esquerda RTRIM(expr) retira espaços à direita REPLICATE(expr, n) repete uma expressão n vezes SUBSTRING(expr,início,ta manho) extrai uma parte de uma string desde início e com tamanho caracteres RIGHT(expr,n) retorna n caracteres à direita da string REVERSE(expr) inverte uma string CHARINDEX('caractere', expr) retorna a posição de um caractere dentro da string SPACE(n) retorna uma string com n espaços STR(número,n,d) converte um valor numérico para string, formatado com n caracteres na parte inteira (antes da vírgula) e d casas decimais depois da vírgula. STUFF(expr1,início,taman ho,expr2) substitui em expr1, os caracteres desde início até tamanho por expr2 DATALENGTH(expr) retorna a quantidade de caracteres em expr PAGE 87 Note que diferente também pode ser representado por !=. Usando faixas Na tabela titles, para cada livro, está guardada a sua data de publicação na coluna 'pubdate'. Se quisermos saber quais os livros publicados no ano de 1991, podemos fazer a consulta: select pubdate, title from titles where pubdate between '1/1/91' and '12/31/91' Onde BETWEEN...AND... seleciona os valores de 'pubdate' que estão dentro de uma determinada faixa. Para fazer o contrário, bastaria usar NOT BETWEEN (mas nesse caso não é tão eficiente a consulta). Usando listas Você pode selecionar valores de acordo com uma lista. Se o valor pertence à lista, a linha será incluída no resultado. Por exemplo: select au_lname, city, state from authors where state in ('UT','CA') O resultado contém as linhas onde 'state' tem um dos valores 'UT' ou 'CA'. Equivale ao mesmo que usar uma condição composta: where state = 'UT' OR state = 'CA' Para retornar os valores que não estão na lista, pode-se usar NOT IN. Casamento de padrões O operador LIKE [como] faz casamento de padrões. Um padrão é uma string contendo caracteres que podem ser combinados com parte de outra string. Por exemplo, o caractere % em um padrão representa qualquer quantidade de caracteres. Por exemplo, para obter todos os autores cujo (primeiro) nome começa com A, use: select au_fname, au_lname from authors where au_fname like 'A%' Para obter todos os nomes que contém as letras 'en' no meio (ou no início ou no fim), use: select au_fname, au_lname from authors where au_fname like '%en%' Outro caractere para usar em padrões é o sublinhado (_). Ele combina com um único caractere. Por exemplo, se nos seus dados existem pessoas com nome 'Sousa' ou 'Souza', você pode usar: LIKE '%sou_a%'. Finalmente, é possível usar os colchetes para combinar com uma determinada faixa de caracteres. Por exemplo, LIKE '[CK]%' encontra os nomes que iniciam com C ou K e LIKE '[A-E]%' os que começam com as letras de A até E. Já LIKE '[^V]%' encontra os nomes que não começam com V (o caractere ^ indica não). Note que as comparações feitas com LIKE dependem da ordem de classificação [sort order] escolhida durante a instalação do SQL Server. Se foi usada a ordem "accent- insensitive", como foi recomendado, ele consegue procurar ignorando acentos. Por exemplo, LIKE 'camara' vai encontrar também 'Câmara'. Procurando valores nulos PAGE 87 O valor NULL no SQL Server indica "não informado" ou "desconhecido". Ele é inserido numa coluna quando aquele valor não é conhecido ou não se aplica. Praticamente qualquer coluna pode ter valores NULL, exceto se tiver sido declarada como NOT NULL na criação da tabela. NULL não é tratado como outros valores. Especialmente, qualquer operação com NULL tem como resultado NULL e qualquer comparação com NULL tem resultado FALSO. Por exemplo, veja as duas consultas a seguir: select price, title from titles where price = 19.99 select price, title from titles where price <> 19.99 Algumas linhas da tabela 'title' têm 'price'=NULL. Essas linhas não vão aparecer nem na primeira nem na segunda consulta, porque NULL=19.99 é falso e NULL<>19.99 também é falso. Para ver essas linhas com valores nulos, use: select price, title from titles where price is NULL Para ver as linhas onde o valor está preenchido (não NULL), use: select price, title from titles where price is NOT NULL Usar 'price = NULL' funciona no SQL Server, mas não é compatível com o padrão ANSI. Juntando várias condições Você pode fazer condições compostas com AND, OR ou NOT. O operador AND (E) liga duas condições e retorna verdadeiro apenas se ambas são verdadeiras e falso se pelo menos uma delas é falsa. Já OR (OU) retorna verdadeiro se pelo menos uma delas for verdadeira e falso se ambas forem falsas. O operador NOT (NÃO) inverte uma condição. Por exemplo: select title, pub_id, price from titles where (title like 'T%' OR pub_id = '0877') AND (price > $16.00) Isso retorna os livros onde: Ambas as condições 1 e 2 são verdadeiras: 1-Uma das seguintes é verdadeira o título ('title') começa com T, OU o código da editora ('pub_id') é '0877' E 2- o preço ('price') é maior que 16.00 Os parênteses indicam a precedência das condições. Na falta de parênteses, o operador NOT, se presente, é aplicado primeiro, depois as condições com AND são agrupadas, depois as condições com OR são agrupadas. Você pode usar parênteses, mesmo se não necessários, para tornar a expressão mais legível. Outros recursos PAGE 87 No comando SELECT, a cláusula DISTINCT elimina valores duplicados no resultado e ordena a lista de resultados. Para apenas ordenar por uma ou mais colunas, use ORDER BY. É possível também combinar o resultado de dois comandos SELECT em um único conjunto com o operador UNION. Eliminando valores duplicados Se você quiser saber quais as cidades e estados nas quais mora algum autor, pode usar a seguinte consulta: select city, state from authors Mas note que algumas cidades, como Oakland, CA, aparecem várias vezes. Para eliminar duplicações, use a cláusula DISTINCT. O SQL leva em conta as duas colunas em conjunto, para remover duplicatas. select distinc t city, state from authors O resultad o será: Note que o resultad o terá apenas 16 linhas. O SQL Server ordena os dados implicitamente, para poder eliminar as duplicatas. Ordenando resultados Para ver o resultado numa ordem particular, use a cláusula ORDER BY. Se estiver presente, deve ser a última cláusula do comando SELECT. Por exemplo, para ver os livros em ordem de preço: select title, type, price from titles order by price Você pode indicar após o nome da coluna, se a ordem é ascendente ou descendente, por exemplo: select title, type, price from titles order by type asc, price desc PAGE 87 insert into Funcionario (CodFuncionario, Nome, CodDepartamento, Sexo, Salario, DataAdmissao) values (7, 'Sétimo Funcionário', 3, 'F', 900.34, '01/01/1997') Nesse caso, os nomes das colunas que serão inseridas são especificados entre parênteses após o nome da tabela. A ordem não precisa ser a mesma das colunas na tabela. Mas a ordem dos valores em VALUES corresponde à ordem dos nomes de colunas informados. Nesse caso, se uma coluna é omitida da lista, o SQL Server faz o seguinte: • Se a coluna tem um valor default , o valor default é inserido. • Caso contrário, se a coluna permite valores NULL, será inserido um NULL. • Caso a coluna não tenha default e tenha sido criada como NOT NULL, o SQL Server gera uma mensagem de erro e cancela a execução do comando. Digite agora 'SELECT * from Funcionario'. Você verá que os funcionários 2 , 3 e 4 a data de cadastro é a data de hoje, porque o default para essa coluna é a função GETDATE(). Em outros casos, o valor da coluna ficou NULL quando não informado. A palavra reservada DEFAULT insere o valor default da coluna. Como exemplo execute o seguinte comando: insert into Funcionario values (8, 'Oitavo Funcionário', 2, 122, 600.23, '01/01/1998', DEFAULT, 'M') Digite agora 'Select * from funcionario where codfuncionario = 8'.Será mostrado os dados do funcionário cujo código é igual a 8. O conteúdo da data do cadastro é a data de hoje, isto ocorreu devido ao seu valor default. Não acrescente nenhuma linha a mais na tabela de 'funcionario', porque ela será usada posteriormente nos nossos exemplos. Caso acrescente o resultado dos exemplos que iremos utilizar não irá coincidir. Vamos inserir alguns dados na tabela 'departamento' do banco de dados Exemplo.Esta tabela possui três colunas. A coluna CodDeptSuperior indica o código do departamento que o departamento que esta sendo cadastrado é subordinado. Execute os seguintes comandos: insert into Departamento Values (1, 'Diretoria', 0) insert into Departamento Values (2, 'Departamento Administrativo', 1) insert into Departamento Values (3, 'Departamento Pessoal', 1) Não acrescente nenhuma linha a mais na tabela de 'departamento', porque ela será usada posteriormente nos nossos exemplos. Caso acrescente o resultado dos exemplos que iremos utilizar não irá coincidir. Acrescente dados para a tabela de clientes. Observe que as colunas DataCadastro e País possuem valores Default , as colunas CPF, Cidade, Estado pode conter o valor null. Usando INSERT com SELECT Você também pode inserir o resultado de uma consulta SELECT dentro de uma tabela. Para testar, crie uma nova tabela no banco de dados Exemplo, usando o Enterprise Manager (ou com o comando CREATE TABLE), com o nome de CopiaCliente. A tabela deverá ter as seguintes colunas: Nome Tipo Codigo int Nome varchar(50) PAGE 87 Para copiar as linhas 2 e 4 da tabela Cliente, use o seguinte comando: insert into CopiaCliente select CodCliente, Nome from Cliente where CodCliente in (2,4) Cada linha retornada pelo SELECT interno será inserida na tabela CopiaCliente. Esse comando é muito útil para copiar dados entre tabelas semelhantes. Note que nesse caso, as regras que vimos anteriormente ainda se aplicam, a cada linha que o comando está tentando inserir. As colunas da tabela de destino e os valores de resultado do SELECT devem ser compatíveis, ou seja, devem ter o mesmo tipo de dados ou tipos compatíveis e devem estar na mesma ordem (mas os nomes não precisam ser os mesmos, como no caso de 'CodCliente' e 'Codigo'). Se as duas tabelas fossem idênticas, poderia ser usado * no select em vez de uma lista de colunas. Se a tabela CopiaCliente tivesse colunas a mais, além de CodCliente e Nome, teria de ser especificada a lista de colunas a ser inseridos, como vimos anteriormente. Excluindo linhas O comando DELETE exclui permanentemente uma ou mais linhas de uma tabela, baseado em alguma condição. Sintaxe DELETE FROM nome_tabela WHERE condicao Onde: nome_tabela é o nome da tabela que deseja excluir os dados. condicao é condição para selecionar as dados que deseja excluir. Por exemplo, para excluir o cliente nº 2 (Codigo =2) da tabela CopiaCliente, execute o seguinte comando no banco de dados Exemplo: delete from CopiaCliente where Codigo = 2 Note que a exclusão não pode ser desfeita. Usando sub-consultas Assim como UPDATE, o comando DELETE também pode usar sub-consultas para excluir linhas baseado nos dados de outra tabela. Para testar, copie novamente as linhas de cliente para CopiaCliente e depois insira duas novas linhas em CopiaCliente, como abaixo: insert into CopiaCliente select CodCliente, Nome from Cliente insert into CopiaCliente (5, 'Cliente Cinco') insert into CopiaCliente (6, 'Cliente Seis') Agora vamos apagar de CopiaCliente apenas as linhas que existem na tabela Cliente. Para isso, use o comando abaixo: delete from CopiaCliente where Codigo in (select CodCliente from Cliente) Limpando uma tabela Para excluir todas as linhas de uma tabela, existem duas opções. Uma é usar um comando DELETE sem condição WHERE: PAGE 87 delete from CopiaCliente Outra opção é o comando TRUNCATE TABLE, que quase sempre é mais rápido que o DELETE, especialmente em tabelas grandes: truncate table CopiaCliente Mas TRUNCATE TABLE não salva informações no log de transações, o que tem algumas conseqüências com relação a backups, como veremos. PAGE 87 SUM calculando o somatório da coluna 'Salario': select coddepartamento Departamento, Sum(Salario) 'Total Salário' from funcionario group by coddepartamento O resultado será: Detalhes do GROUP BY A cláusula GROUP BY agrupa valores baseado em uma ou mais colunas. No último SELECT acima, group by coddepartamento significa que todas as linhas que têm o mesmo valor da coluna 'coddepartamento' serão agrupadas em uma só. Uma função agregada, como SUM, COUNT, AVG calcula valores sobre todos os elementos do grupo. Uma linha de resumo é gerada para o grupo, contendo o valor representante do grupo, 'coddepartamento' e o resultado de SUM(Salario). Note que as colunas de resultado da cláusula SELECT (a lista de colunas após o SELECT) podem ser apenas: - Uma coluna presente na lista do GROUP BY OU - Um valor gerado por uma função agregada Outras colunas não podem ser incluídas no resultado, porque teriam valores diferentes para cada linha do grupo. Usando a cláusula HAVING Após feito o agrupamento, pode-se usar a cláusula HAVING para selecionar quais os grupos a serem incluídos no resultado. Por exemplo, para selecionar os departamentos que pagam mais que 1000.00, pode-se fazer: select coddepartamento Departamento, sum(Salario) 'Salário Total' from funcionario group by coddepartamento having sum(Salario) > 1000.00 Note que as cláusulas WHERE e HAVING são semelhantes. Mas WHERE seleciona as linhas da tabela que irão participar da geração do resultado. Essas linhas serão agrupadas e depois HAVING é aplicado ao resultado de cada grupo, para saber quais grupos vão aparecer no resultado. Nas condições usadas por HAVING só podem aparecer valores que sejam os mesmos em todos os elementos do grupo. PAGE 87 Junções de tabelas Um comando SELECT também pode fazer uma consulta que traz dados de duas ou mais tabelas. Esse é um processo chamado de junção [join]. As tabelas têm uma coluna em comum que é usado para fazer as junções. Antes de executar os exemplos mostrados abaixo, vamos inserir um departamento na tabela 'departamento' que neste caso não terá nenhum funcionário relacionado. Execute o seguinte comando: insert into departamento values (4, 'Contabilidade', 2) Por exemplo, no banco de dados Exemplo, a tabela 'departamento' contém dados de departamentos. Cada departamento tem um número de identificação único, 'CodDepartamento'. Na tabela 'funcionario' estão os dados dos funcionários. Para identificar o departamento do funcionário, a tabela 'funcionario' tem também uma coluna 'CodDepartamento' que pode ser usada para procurar na tabela 'departamento'. Por exemplo, digite: select * from funcionario O resultado será: ...e veja que na primeira linha da tabela, o nome do funcionário é 'Primeiro Funcionário' e o valor da coluna 'coddepartamento' é 2. Agora digite: select * from departamento Depois de executar, note que na segunda linha o nome do departamento , cujo código é igual a 2 , é 'Departamento Administrativo'. Se quisermos ver uma listagem mostrando os funcionários e seus respectivos departamentos, basta fazer uma junção das duas tabelas. Uma das formas de fazer isso é: select departamento.nome 'Departamento', funcionario.nome from funcionario, departamento where funcionario.coddepartamento = departamento.coddepartamento O resultado será: PAGE 87
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved