Pular para o conteúdo principal

Conectando aplicações Desktop com Microsoft SQL Server LocalDB

Para os usuários do Microsoft SQL Server que não querem ou não possam fazer uma instalação completa do SQL Server (mesmo a versão Express) é disponibilizada pela Microsoft uma versão compacta deste chamada de LocalDB que possui todos os recursos da versão SQL Server Express e também as suas limitações como, por exemplo, o tamanho do banco de dados limitado a 10 GB.

Uma versão resumida dos seus recursos pode ser conferida neste artigo em português, se estiver querendo conhecer mais profundamente, recomendo este outro post feito pela Microsoft onde você tem uma visão mais abrangente da ferramenta.

O download dos instaladores tanto para 32 como 64 bits pode ser feito neste link.

Todas estas fontes são bem completas, mas, como sempre, existem ainda funcionalidades não documentadas e que podem vir a ser de grande utilidade em algum momento.

Acredito que a principal motivação para se utilizar o LocalDB seja a simplicidade de instalação - não é necessário realizar nenhuma configuração - e de conexão. Em aplicações desktop (bem como outras aplicações do Framework .Net), se você estiver usando o ADO.NET basta que modifique um pouco a string de conexão para que fique da seguinte forma:


Data Source=(localdb)\\mssqllocaldb;
  AttachDbFileName=<Caminho completo para o arquivo mdf>
  Integrated Security=true;

Os elementos que estão presentes nesta conexão são os seguintes:

Elemento Conteúdo
Data Source=(localdb)\\mssqllocaldb Especifica a conexão com um banco SQL Server LocalDB.
Identificado pela palabra (localdb) indica ao compilador que a conexão será feita com este mecanismo em vez de conectar-se com um serviço.
O termo mssqllocaldb colocado na sequência indica a instância. Em versões mais antigas como SQL 2008 ou SQL2012 pode ser substituídos por v11.0 e v12.0 respectivamente.
AttachDbFileName=<Caminho completo para o arquivo mdf> Neste atributo deve ser informado o arquivo MDF correspondente ao banco de dados a ser acessado. Este banco deve estar em uma pasta na qual o usuário do Windows autenticado na máquina tenha permissão de escrita. Não são suportados caminhos relativos de rede (\\servidor\compartilhamento).
Integrated Security=true; O acesso inicial permitido é usando a integração do usuário autenticado do Windows. Este tipo de acesso é garantido assim que a aplicação é instalada não havendo necessidade de configurações adicionais.
É possível criar usuários e associar seus logins com um banco de dados específico bem como, via utilitário SQLCMD dar permissões para estes usuários. Isto pode ser conferido neste post em inglês.
Ainda é possível fazer a conexão com o banco usando o Visual Studio.

Considerações sobre o exemplo

Disponibilizei o projeto de onde a tela da imagem foi capturada neste link. Este projeto é executado com o Visual Studio 2017 Communit Edition porém deve poder ser aberto com outras versões sem problemas.

O objetivo do projeto é executar uma aplicação desktop Windows Forms sob o Framework .Net 2.0 onde o usuário digite comandos SQL e estes sejam executados em qualquer base de dados do SQL Server para a qual se possua o arquivo MDF.

No exemplo da imagem foi utilizado o banco de dados AdventureWorks2012.

Como funcionalidade adicional, é exibida no rodapé da aplicação a string de conexão que foi gerada para ser usada pelo ADO.NET.

Outras considerações

Como sempre, é necessário que o banco MDF seja da mesma versão do SQL Server LocalDB instalado ou inferior a esta, assim, bancos 2012 só serão acessados a partir desta versão.

O banco é multiusuário, ou seja, mais de uma pessoa pode ter acesso aos dados do mesmo arquivo MDF.

A prinicipal diferença da utilização do LocalDb em vez de se fazer a instalação completa do SQL Server é que somente o mecanismo necessário para prover suporte para todas as instruções TSQL deve ser instalado, em uma instalação tradicional, diversos itens como suporte para os serviços, configurações e instâncias, protocolos de rede e etc. são instalados juntamente. Com o LocalDB tudo o que é necessário fica dentro de uma pasta e o programa que irá consumir os dados executa o arquivo sqlservr.exe que na minha máquina está localizado na pasta C:\Program Files\Microsoft SQL Server\120\LocalDB\Binn por ser o SQL Server 2014.

Se você instalar ou instalou o Visual Studio (qualquer edição) já possui uma instância do LocalDB instalado e não é necessário fazer nenhuma instalação adicional.

Ao instalar o SQL Server Express (ou outras edições), é possível selecionar a instalação apenas deste recurso.

Como pré-requisio está a instalação do Framework .Net 4.0.2, sem o qual não será possível executar o programa que dá acesso ao LocalDb.

Por fim, para usar o LocalDB sempre será necessário fazer a instalação desta versão, ou seja, não é possível simplesmente copiar o arquivo executável o SQL Server e o MDB e já tentar conectar. Isto pode representar algum trabalho extra, caso se esteja usando aplicação stand alone para acesso aos dados, porém, ainda é mais simples do que ter de instalar a versão completa do SQL Server. Até a próxima!


Postagens mais visitadas deste blog

Como gerar scripts para exportar dados no SQL Server 2008

Uma das tarefas mais comuns no trabalho com desenvolvimento de software que consome dados em bancos como o SQL Server 2008 é a necessidade de em algum momento precisarmos exportar os dados de um banco para outro. Quer seja para realizar testes ou fazer simulações existem várias maneiras de se fazer isto. Neste post eu quero demonstrar um recurso do SQL Server Management Studio (SSMS) que permite realizar esta tarefa rapidamente.Para os que estão acostumados a usar esta ferramenta, já devem saber que é possível gerar scripts para o schema e também transferir os dados entre dois bancos distintos. Isto pode ser feito se o SSMS puder conectar-se com as duas bases, de origem e destino. No exemplo que vou dar, o objetivo é gerar o script apenas para uma tabela do banco de dados de exemplo da Microsoft – Northwind.1. Iniciando o assistenteO assistente deve ser iniciado clicando com o botão direito do mouse sobre o banco onde se encontra a tabela a qual iremos gerar o script. Deve se clicar n…

Pivot dinâmico com SQL Server

Passo a passo para usar pivoteamento dinâmicoOs bancos de dados bem configurados e definidos armazenam os dados de forma a otimizar o acesso, evitando duplicidade e garantindo a integridade. Porém, em muitas situações isto pode dificultar a apresentação de forma adequada sendo necessário preparar os dados usando vários recursos entre os quais, fazer o pivoteamento.Se você não precisou ainda usar ou não sabe o que é consiste em transformar cada linha de uma determinada coluna em colunas de uma nova consulta.Assim, considere uma tabela que armazene as notas bimestrais de um boletim. Uma possível estrutura para esta tabela seria algo assim:ColunaTipo de dado/TamanhoDisciplinanvarchar(50)BimestreIntNotanumeric(5,2)Uma consulta select nesta tabela com alguns dados traria um resultado parecido com o abaixo:Porém pode ser que para apresentar estes dados em um relatório seja necessário transformar cada bimestre em uma coluna e agrupar as notas nestas colunas para que fique dessa forma:Isto po…

Desabilitando o auto commit no SSMS (SQL Server Management Studio)

(Ou, como prevenir desastres e manter o emprego a salvo…)Neste post vai uma pequena mas tremendamente útil dica para desabilitar o auto commit da aplicação SQL Server Management Studio (SSMS) que é usada por dez entre dez usuários do banco de dados SQL Server para fazer consultas, alterações e executar scripts no banco de dados. (Preferências à parte, realmente muita gente usa),A primeira e mais importante notícia é que, diferentemente da ferramenta do Oracle, este editor de scripts do SQL Server vem com o recurso de auto commit ativado por padrão, assim, qualquer instrução DML (alteração dos dados com update, insert e delete) ou DDL (alteração no banco como create, drop, alter, etc.) será imediatamente enviada ao banco e persistida.Isto pode ser altamente crítico pois se estiver executando as instruções em um banco de dados de produção não haverá muitas formas de desfazer se é que haverá.Inicialmente, pode se evitar muitos acidades executando estas instruções dentro de um bloco BEGIN…