Skip Navigation Links



Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de UsuĆ”rios
»CĆ©lulas AcadĆŖmicas«

Morcegando
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
FaƧa um pequeno teste com 10 questƵes de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programaĆ§Ć£o com nosso treinamento on-line de lĆ³gica de programaĆ§Ć£o
.:.
Veja nosso calendƔrio de treinamentos
Gostou da PƔgina?
Então

para um amigo!

Pesquisa personalizada
Pesquisar Dicas:

 







SQL Server Express - Tudo o que você Gostaria de Saber

Quando instalamos o Visual Studio ele instala junto o SQL Server Express. Afinal, SQL Server Express é o servidor de banco de dados gratuito da Microsoft.

Pelo fato de ser instalado sem interface gráfica de gerenciamento e o uso de um servidor não ser algo tão comum para quem está começando em programação, muitas dúvidas surgem. Vamos então falar sobre o uso do SQL Server Express e resolver essas dúvidas.

Criando o Banco de Dados

O Visual Studio possui o Server Explorer que permite a criação e gerenciamento da estrutura do banco de dados, por isso o servidor é fornecido mesmo sem uma interface de gerenciamento.

Para criar o banco utiliza-se "Add new item..." no projeto e adiciona-se um "Serviced-Based Database". O Visual Studio acrescenta então um arquivo .mdf no nosso projeto e já cria um dataset para ele, mas como o .mdf encontra-se vazio, o dataset também estará, isso é normal.

Ao clicar com o botão direito sobre o arquivo .MDF e selecionar open, o .mdf será aberto no server explorer. Através do server explorer você poderá criar tabelas, views, procedures, tudo o que precisa para seu banco de dados.

Se estiver utilizando uma aplicação Windows, o banco de dados simplesmente fará parte do projeto. Se estiver utilizando uma aplicação web, o banco de dados ficará dentro da pasta App_data

Por que "Serviced-Based" ?

Um servidor realiza suas tarefas fornecendo serviços (Dãã) e neste cenário o desenvolvedor é apenas usuário destes serviços.

Não é comum um servidor permitir que o usuário tenha acesso a seus arquivos diretamente, portanto foi uma surpresa para os conhecedores de SQL Server quando este recurso surgiu a partir da versão do SQL Server 2005.

Este recurso foi criado para facilitar o processo de desenvolvimento e não necessariamente para ser utilizado em ambiente de produção (com a aplicação rodando em seu ambiente real), porque em ambiente de produção traz mais problemas do que vantagens.

Em situações normais um banco de dados do SQL Server fica "attachado" ao servidor, ou seja, o servidor tem o total controle do arquivo de banco enquanto que o usuário - desenvolvedor no caso - mal sabe onde o arquivo de banco encontra-se fisicamente.

No exemplo do Serviced-Based Database o que ocorre é o oposto. O desenvolvedor cria o arquivo de banco e o SQL Server é "chamado" para gerencia-lo. A mágica encontra-se na string de conexão ao banco de dados.

Após criar o MDF (Serviced-Based database) a string de conexão é adicionada no web.config ou app.config. Ela fica da seguinte forma :

 

A "magica" desta string de conexão pode ser resumida da seguinte forma :

Data Source : O servidor que está sendo chamado para gerenciar nosso arquivo de banco de dados

AttachDBFileName : O nome do arquivo que estamos pedindo para que o servidor gerencie. Observe o nome da propriedade - "AttachDb..." - estamos pedindo ao SQL Server que faça um Attach deste banco de dados para poder gerencia-lo.

User Instance : Este atributo determina ao SQL Server que deve ser utilizada uma instância isolada do SQL Server para gerenciar o arquivo de dados. Isso deixa o nosso banco de dados isolado dos demais e cria algumas facilidades em ambiente de desenvolvimento.

O problema : Toda essa mágica do SQL Server para poder funcionar de forma simples em tempo de desenvolvimento cria um grande custo de performance. O trabalho de inicializar uma nova instância do SQL Server e fazer o attach do arquivo ".mdf" no momento da conexão consome muita performance.

Arquivo MDF e Aplicações Windows

Em aplicações web, o arquivo .MDF fica sempre localizado na pasta app_data, então isso não é um problema, digamos assim.

Em aplicações windows, porém, as coisas ocorrem de forma um pouco diferente. Faça o seguinte teste :

1) Em um projeto windows com arquivo .mdf, faça um rebuild

2) No solution explorer, clique no botão "show all files"

3) Observe o diretório bin\debug, encontrará um arquivo .mdf lá.

Durante o processo de compilação (e isso acontece em todas as execuções) o arquivo .MDF é copiado para o diretório da compilação (neste caso, bin\debug).

A consequencia disso é que se você executar a aplicação e adicionar 5 registros no seu banco enquanto a aplicação estiver rodando, quando você executar novamente a aplicação os 5 registros não estarão lá porque o .MDF foi novamente copiado da raiz do projeto para o diretório debug.

Existem 2 alternativas para contornar isso : Ou você convive com essa característica ou abandona os Service-Based databases, o que irei citar mais adiante neste artigo.

Um pouco sobre Deployment

Muita gente se confunde com o fato do arquivo já estar incluido na aplicação, acreditando que será possível enviar o arquivo junto com a aplicação sem que exista o SQL Server no computador/servidor onde a aplicação será instalada.

Completo engano.

Conforme vimos nos detalhes da string de conexão, a string pede ao SQL Server para abrir e gerenciar o arquivo, portanto o SQL Server precisa estar presente na máquina em que a aplicação for rodar.

Aplicações Windows

Se a aplicação for uma aplicação isolada, rodando em uma única máquina, então o SQL Server Express deverá ser instalado nesta máquina. Existem técnicas para incluir o SQL Server Express no setup de uma aplicação feita no visual studio.

Porém se a aplicação for rodar em rede, sendo utilizada por vários usuários e com um banco de dados centralizado para todos, será necessário configurar um servidor de dados, o que significa abandonar o modelo de "Service-Based database".

Aplicação Web

Nenhum provedor suporta o SQL Server Express em sua forma padrão, com a string de conexão padrão que comentamos. É oneroso demais para o servidor web.

Desta forma a única solução para aplicações web é abandonar o modelo de "Service-Based database" quando são publicadas em provedores.

Como o servidor do provedor está fora de controle do usuário, os métodos que descreverei mais adiante neste artigo não serão úteis neste caso.

Existem duas formas de resolver : Envia-se o arquivo .MDF para o provedor e solicita-se que o provedor faça uma importação de conteúdo - quando o provedor fornecer este serviço - ou utiliza-se o Database Publishing Wizard para transmitir a estrutura e os dados para seu banco no provedor. Mais sobre isso adiante.

Banco ASPNETDB.MDF

No desenvolvimento web, algumas funcionalidades exigem a existência de um banco de dados. Caso o ambiente de desenvolvimento esteja corretamente configurado com o SQL Server Express, quando estas funcionalidades são utilizadas - tal como o sistema de segurança do ASP.NET - um banco de dados é criado automaticamente na pasta App_data.

Caso o ambiente não esteja corretamente configurado, um erro ocorre.

Algumas funcionalidades específicas do ASP.NET necessitam de um local para armazenar seus dados e a criação automática do banco de dados ASPNETDB foi a solução simples encontrada para permitir os desenvolvedores trabalharem sem se preocuparem muito com a configuração de ambiente.

Mas e o deployment ? Tudo varia conforme seu cenário, veja abaixo.

Tenho servidores próprios

Neste caso o mínimo que você deve fazer é abandonar a string de conexão do tipo "Service-Based" e passar a trabalhar com o ASPNETDB attachado ao servidor SQL Server. Siga os passos descritos mais abaixo em "Abandonando o Service-Based Database" e depois reconfigure os providers do ASP.NET segundo o artigo "Configurando Providers"

Quero ter só um banco

Neste caso você vai desejar criar a estrutura (tabelas/procedures) do banco aspnetdb dentro do seu banco. Isso é explicado em "Configurando Providers"

Utilizo provedor de hospedagem

Neste caso, além de precisar criar a estrutura (tabelas/procedures) dentro do único banco que o provedor vai fornecer para você, você vai precisar ajustar a configuração dos providers para apontarem para este único banco. Tudo isso você encontra em "Configurando Providers"

Não quero utilizar SQL Server

As funcionalidades que precisam guardar suas informações em banco utilizam-se do que são chamados de providers. Os providers padrões foram feitos para acessar SQL Server, mas você pode achar providers para diversos tipos de banco, até mesmo access ou arquivos xml.

Você encontra informações sobre a configuração desses providers no artigo "Configurando Providers"

SQL Server Management Studio Express

Vimos até onde podemos ir sem interface de gerenciamento. O SQL Server Express, porém, possui uma interface de gerenciamento, o SQL Server Management Studio Express.

O SSMSE não é instalado junto com o SQL Server Express, é necessário fazer o download separado neste endereço -

Com a interface a disposição, podemos fazer várias outras tarefas.

Abandonando o Service-Based Database

Em vários pontos anteriormente citei sobre os problemas do Serviced-Based Database, tal como performance e os problemas com dados em aplicações windows.

Então você pode seguir os seguintes passos para abandonar por completo o trabalho com Serviced-Based Database e passar a trabalhar com bancos de dados attachados no SQL Server :

1) Crie uma pasta onde planeja armazenar seus bancos de dados. Não pense apenas a nível do projeto atual, você tem um servidor que virá a atender todos os seus projetos, então pense em uma pasta para armazenar seus bancos de dados de forma geral.

2) Mova seu arquivo .MDF para esta pasta que você criou

3) Abra o Management Studio Express

4) Na tela de login automaticamente aberta, indique o servidor (.\sqlexpress) e faça login utilizando windows authentication

5) Clique com o botão direito na pasta "databases" em seu servidor sql express

6) Selecione "Attach..."

7) Selecione seu arquivo .MDF

8) Dê ok e aguarde o sql express processar o attach

9) Clique com o botão direito no banco de dados e faça um rename, colocando o nome que achar mais interessante.

10) No arquivo .config de seu projeto, altere sua string de conexão retirando os atributos attachdbfilename e user instance

11) Acrescente em sua string de conexão o atributo Initial Catalog="nome do seu banco"

Pronto, agora seu banco está devidamente vinculado ao SQL Server, não sofrendo mais os problemas de performance que existiam nem os problemas de dados nas aplicações windows.

Autenticação

Todo usuário que faz acesso ao servidor SQL Server precisa ser autenticado, identificado. Existem 2 formas de autenticação no servidor SQL Server : Autenticação Windows (ou integrada) e Autenticação do SQL (ou Standard).

Autenticação Windows é quando o servidor SQL Server tenta identificar o usuário windows que encontra-se fazendo o acesso ao servidor SQL. Em aplicações windows, o login utilizado para entrar no SQL Server será o do usuário logado na máquina em que a aplicação estiver. Já em aplicações web fica um pouco mais complicado.

Em aplicações web o usuário está acessando um servidor web. É o servidor web que faz o acesso ao servidor de banco de dados.

Quando dizemos "servidor web" isso quer dizer que existe um software ativo naquele servidor fazendo o papel de servidor web - frequentemente o IIS. Qualquer software, para poder ser executado, precisa se identificar ao sistema operacional. Isso acontece mesmo com softwares de servidor, como o IIS e mesmo que ninguém esteja logado na máquina - o administrador do servidor configura o software para se apresentar como um certo usuário ou o software já vem configurado desta forma.

Assim sendo, quando falamos de autenticação windows com o SQL Server em um ambiente web, o usuário que vai estar sendo utilizado para fazer a autenticação é o usuário com que o IIS se apresenta ao servidor e não o usuário que encontra-se no browser.

Apesar de ser possível, através de configurações do servidor web, autenticar o usuário que está no browser diretamente com o SQL Server, isso não é recomendável em hipótese alguma, pois faria a aplicação web perder o que é chamado de pooling de conexões, que é um recurso de otimização muito importante para aplicações web.

A melhor forma de autenticação é sem dúvida a autenticação windows, em ambos os casos, em aplicações web e em aplicações windows. Porém para ambos os casos são necessárias configurações que vão além do trabalho de um desenvolvedor :

Aplicação Windows : A rede da empresa precisa estar corretamente configurada com um domínio e as máquinas logando-se no domínio. O SQL Server precisa fazer parte do domínio e o administrador deve ter configurado uma forma otimizada para a administração da autenticação com SQL Server

Aplicação Web : Cabe ao administrador do servidor web configurar a forma de autenticação entre o IIS e o SQL Server de forma que seja possível utilizar a segurança integrada.

Uma observação importante sobre aplicações web é que nenhum provedor permite o uso de autenticação windows, em servidores compartilhados e com acesso remoto ao banco seria complexo demais fazer a configuração.

Recomendação

São os administradores da rede que deverão determinar a forma final como a autenticação ao SQL Server deve ser feita, garantindo uma alta segurança na rede. Desta forma, a segurança escolhida durante o desenvolvimento é temporária. Importa apenas que não dificulte o desenvolvimento e que a string de conexão seja mantida de forma única nos arquivos .config para poder ser alterada posteriormente.

Para aplicações windows, a segurança durante o desenvolvimento pode ser integrada com o windows, sem problema algum. Para aplicações web, porém, a segurança integrada funciona apenas até determinado ponto. Algumas tarefas em aplicações web farão a segurança integrada no ambiente de desenvolvimento parar de funcionar, exigindo configurações mais complexas. O ideal então é usar a segurança do SQL no desenvolvimento web e posteriormente trocar para o formato determinado pelo administrador de rede.

Habilitando a Autenticação do SQL

Por default o SQL Server tem, após sua instalação, apenas a autenticação windows habilitada. Para podermos trabalhar com autenticação do SQL precisamos habilita-la primeiro.

Com o SQL Server Management Studio Express instalado, siga os seguintes passos :

1) Abra o SQL Server Management Studio Express

2) Expanda a aba security abaixo do seu servidor

3) Clique em logins

4) Entre nas propriedades do usuário SA

2) Do lado esquerdo, clique em "Status" e habilite a conta do usuário SA

3) Voltando ao "General" pelo lado esquerdo, desabilite a opção "enforce password policy". O SQL Server se integra com as políticas de segurança do windows possibilitando que sejam aplicadas para as contas de usuário no SQL Server. Desabilitar este recurso em ambiente de desenvolvimento permite utilizar senhas mais simples enquanto estiver no ambiente de desenvolvimento. Claro que é algo que não deve ser feito em ambiente de produção.

5) Altere a senha do usuário SA e dê Ok

6) Abra as propriedades do servidor SQL Server (botão direito no servidor)

7) Em security, altere o modo de segurança para misto e clique em Ok.

8) Com o botão direito no servidor, selecione "restart"

Com isso feito, a conta de SA encontra-se habilitada. O próximo passo é alterar a string de conexão, retirando o atributo Integrated Security=SSPI e trocando por User ID=sa;Password=senhadosa

Habilitando o SQL Server Express como Servidor Local

Logo após instalado, o SQL Server Express apenas permite acesso da própria máquina em que ele encontra-se, é uma questão de segurança. Algumas situações, porém, farão com que você deseja que o SQL Server Express seja acessado em rede :

1) Criação de aplicações windows em rede local compartilhando um único banco de dados

2) Instalação do servidor de banco de dados separadamente ao servidor web

3) Utilização do mesmo servidor por aplicações windows e web

É interessante observar que até mesmo uma conexão local pode vir a ser recusada se a string de conexão não estiver corretamente configurado.

Se o Data Source da string de conexão estiver como .\SQLExpress ou (local)\SQLExpress, a conexão é corretamente compreendida como conexão local. A simples colocação de (nomedamaquia)\SQLExpress faz a conexão ser feita através dos mecanismos de rede e consequentemente ser rejeitada pelo SQL Express.

Vamos então habilitar o acesso remoto do SQL Server Express :

1) Pelo menu iniciar, abra o Surface area configuration

2) Selecione Surface Area Configuration for Services and Connections

3) Do lado esquerdo, selecione seu servidor

4) Expanda o item Database Engine e clique em Remote Connections

5) Selecione o radion button "Local and Remote Connections" e selecione o protocolo tcp/ip

6) Aplique as mudanças. Você receberá uma mensagem avisando da necessidade de reiniciar o serviço do SQL Server.

7) No SQL Server Management Studio Express, clique com o botão direito no servidor e selecione restart

 

Pronto, seu servidor SQL Express já pode ser acessado de aplicações que estejam rodando em qualquer máquina da empresa

Publicando o Banco - Database Publishing Wizard

O Database Publishing Wizard, forma mais fácil de publicar um banco para um provedor de hospedagem, ée como um "addin" para o visual studio, ele se integra ao server manager permitindo que um banco de dados seja preparado para publicação diretamente a partir do Visual Studio.

Neste caso, "preparado para publicação" significa gerar um arquivo de script contendo o script de criação dos objetos de banco e inserção dos dados na base de dados, para que desta forma você possa rodar este script utilizando a conexão de banco que o provedor de hospedagem fornecer a você.

Eis os passos para gerar o script para publicação do banco :

1) Clique com o botão direito no banco de dados na janela server explorer e selecione "publish to provider..."

2) Clique "Next" na página de boas vindas e confirme o banco de dados selecionado.

3) Selecione a opção "Script to file", indique o arquivo no qual o script será gravado e clique em "Next"

4) Indique o servidor para o qual os scripts serão gerados, sql server 2000 ou 2005. Na mesma tela é possível indicar se o script gerado deverá ser apenas dos objetos ou também dos dados.

5) Na última tela, clique em "Finish".

Uma vez gerado o arquivo, você pode executa-lo no servidor de banco do seu provedor conforme as orientações dadas pelo provedor para conexão ao servidor de dados.

 





Envie seus comentįrios sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentįrios nesta pįgina

Veja abaixo os comentários já enviados :

Nome : Poetapancho E-Mail : opoeta@terra.com.br
Isso é o que eu chamo de explicação convincente, este tutorial é completo.
Eu conheço pouco de SQLServer, mas com esta explicação ja pude notar o quanto me valeu a pena aprender mais um pouquinho sobre esse banco de dados.
Gostaria de receber no meu email mais conhecimentos sobre banco de dados MSSQLserver, eu uso o SQLServer 2005.
Obrigado pelo que voces puderam me proporcionar e fico aguardando outros tutos.
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : WissfR7xWS E-Mail : 4h2yuv51r9@hotmail.com
?????? ???????HTML??:<a> <abbr> <acronym> <b> <blockquote> <cite> <code> <del> <em> <i> <q> <strike> <strong> var RecaptchaOptions = { theme : 'blackglass', lang : 'en' , tabindex : 5 }; #submit {display:none;}
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : Johnf6 E-Mail : johnf352@gmail.com
Pretty portion of content. I just stumbled upon your web site and in accession capital to assert that I acquire actually enjoyed account your blog posts. Any way I will be subscribing in your augment or even I fulfillment you access constantly quickly. ccckeddgdfkd
Nome : Pharmg524 E-Mail : johng566@aol.com
Very nice site!
Nome : Pharme442 E-Mail : johne421@aol.com
Very nice site!
Nome : Pharmd468 E-Mail : johnd535@aol.com
Very nice site!
Nome : Pharmk477 E-Mail : johnk227@aol.com
Very nice site!
Nome : Pharmb229 E-Mail : johnb653@aol.com
Very nice site!
Nome : Pharma235 E-Mail : johna636@aol.com
Very nice site!
Nome : Pharma692 E-Mail : johna915@aol.com
Very nice site!
Nome : Pharmd49 E-Mail : johnd656@aol.com
Very nice site!

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Conheça mais sobre o nosso site :

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Quer saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e
Prepare-se para o Mercado!
Veja o que a Búfalo tem para você.

ļæ½ BĆŗfalo InformĆ”tica, Treinamento e Consultoria - Rua Ɓlvaro Alvim, 37 Sala 920 - CinelĆ¢ndia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail:
contato@bufaloinfo.com.br