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!