SQL Server Express LocalDB

Aplica-se a:SQL Server

O LocalDB do Microsoft SQL Server Express é um recurso do SQL Server Express voltado para desenvolvedores. Ele está disponível no SQL Server Express com Advanced Services.

A instalação do LocalDB copia um conjunto mínimo de arquivos necessários para iniciar o Mecanismo de Banco de Dados do SQL Server. Após a instalação do LocalDB, você poderá iniciar uma conexão usando uma string de conexão especial. Ao se conectar, a infraestrutura necessária do SQL Server será criada e iniciada automaticamente, permitindo que o aplicativo use o banco de dados sem a necessidade de tarefas complexas de configuração. O Developer Tools pode fornecer aos desenvolvedores um Mecanismo de Banco de Dados do SQL Server, que permite escrever e testar códigos Transact-SQL sem precisar gerenciar uma instância completa do SQL Server.

Mídia de instalação

LocalDB é um recurso selecionado durante a instalação do SQL Server Expresse que está disponível durante o download da mídia. Se você baixar a mídia, escolha Express Advanced ou o pacote LocalDB .

Os clientes do Visual Studio 2019 e 2022 devem instalar SQL Server Express 2019.

O instalador do LocalDB SqlLocalDB.msi está disponível na mídia de instalação para todas as edições, exceto para o Express Core. Ele está localizado na pasta <installation_media_root>\<LCID>_ENU_LP\x64\Setup\x64. O LCID é uma ID de localidade ou código de idioma. Por exemplo, um valor LCID de 1033 refere-se à localidade en-US.

Como alternativa, é possível instalar o LocalDB pelo Instalador do Visual Studio, como parte da carga de trabalho de Processamento e Armazenamento de Dados, da carga de trabalho de desenvolvimento Web e ASP.NET ou como um componente individual.

Instalar o LocalDB

Instalar o LocalDB por meio do assistente de instalação ou usando o programa SqlLocalDB.msi. O LocalDB é uma opção na instalação do SQL Server Express LocalDB.

Escolha LocalDB na página Seleção de Recursos/Recursos Compartilhados durante a instalação. Para cada versão principal do Mecanismo de Banco de Dados do SQL Server, pode haver apenas uma instalação dos arquivos binários do LocalDB. Podem ser iniciados vários processos do mecanismo de banco de dados, e todos usarão os mesmos binários. Uma instância do Mecanismo de Banco de Dados do SQL Server iniciada como o LocalDB terá as mesmas limitações do SQL Server Express.

Uma instância do LocalDB do SQL Server Express é gerenciada com o utilitário SqlLocalDB.exe. O LocalDB do SQL Server Express deve ser usado no lugar do recurso de instância do usuário SQL Server Express que foi preterido.

Descrição

O programa de instalação do LocalDB usa o programa SqlLocalDB.msi para instalar os arquivos necessários no computador. Uma vez instalado, o LocalDB torna-se uma instância do SQL Server Express que pode criar e abrir bancos de dados do SQL Server. Os arquivos de banco de dados do sistema para o banco de dados são armazenados no caminho de AppData local, que normalmente é oculto. Por exemplo, C:\Users\<user>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\LocalDBApp1\. Arquivos de banco de dados do usuário são armazenados onde o usuário determinar, normalmente em algum lugar na pasta C:\Users\<user>\Documents\.

Para saber mais sobre como incluir o LocalDB em um aplicativo, confira a Visual Studio Visão geral de dados locais, Criar um banco de dados e adicionar tabelas no Visual Studio.

Para saber mais sobre a API LocalDB, confira Referência de LocalDB do SQL Server Express.

O utilitário SqlLocalDB pode criar instâncias do LocalDB, iniciar e interromper uma instância do LocalDB, além de contar com opções para ajudar a gerenciar o LocalDB. Para obter mais informações sobre o utilitário SqlLocalDB, confira Utilitário SqlLocalDB.

A ordenação de instâncias do LocalDB foi definida como SQL_Latin1_General_CP1_CI_AS e não pode ser alterada. Normalmente há suporte para ordenações nos níveis de banco de dados, de coluna e de expressão. Os bancos de dados independentes seguem os metadados e as regras de ordenações tempdb definidas por Ordenações de banco de dados independentes.

Restrições

  • O LocalDB não pode ser gerenciado remotamente por meio do SQL Server Management Studio.

  • O LocalDB não pode ser um assinante de replicação de mesclagem.

  • O LocalDB não dá suporte a FILESTREAM.

  • O LocalDB só permite filas locais para Service Broker.

  • Uma instância do LocalDB pertencente às contas internas, como NT AUTHORITY\SYSTEM, pode ter problemas de capacidade de gerenciamento devido ao redirecionamento do sistema de arquivos do Windows. Em vez disso, use uma conta normal do Windows como o proprietário.

Instâncias automáticas e nomeadas

O LocalDB oferece suporte a dois tipos de instâncias: Instâncias automáticas e instâncias nomeadas.

  • As instâncias automáticas do LocalDB são públicas. Elas são criadas e gerenciadas automaticamente para o usuário e podem ser usadas por qualquer aplicativo. Existe uma instância automática do LocalDB para cada versão do LocalDB instalada no computador do usuário. As instâncias automáticas do LocalDB fornecem gerenciamento de instância contínuo. Não há necessidade de criar a instância; assim é o suficiente. Esse recurso facilita a instalação e migração do aplicativo para um computador diferente. Se o computador de destino tiver a versão especificada do LocalDB instalada, a instância automática do LocalDB para essa versão também estará disponível no computador de destino. As instâncias automáticas do LocalDB têm um padrão especial para o nome de instância que pertence a um namespace reservado. As instâncias automáticas evitam conflitos de nomes com instâncias nomeadas do LocalDB. O nome da instância automática é MSSQLLocalDB.

  • As instâncias nomeadas do LocalDB são privadas. Elas pertencem a um único aplicativo, que é responsável por criar e gerenciar a instância. As instâncias nomeadas possibilitam o isolamento de outras instâncias, podendo melhorar o desempenho ao reduzir a contenção de recursos com outros usuários do banco de dados. É necessário criar instâncias nomeadas explicitamente por meio da API de gerenciamento do LocalDB, ou implicitamente por meio do arquivo app.config para uma aplicação gerenciada (embora a aplicação gerenciada também possa utilizar a API, se você desejar). Cada instância nomeada do LocalDB tem uma versão associada do LocalDB que aponta para o respectivo conjunto de binários do LocalDB. O nome da instância do LocalDB é o tipo de dados sysname e pode ter até 128 caracteres. (Esse nome de instância difere de instâncias nomeadas regulares do SQL Server, que limita os nomes a NetBIOS regulares de 15 caracteres ASCII.) O nome de uma instância de LocalDB pode conter qualquer caractere Unicode que seja válido em um nome de arquivo. Uma instância nomeada que usa um nome de instância automático torna-se uma instância automática.

Diferentes usuários em um mesmo computador podem ter instâncias com o mesmo nome. Cada instância é executada pelo respectivo usuário em seu próprio processo.

Instâncias compartilhadas do LocalDB

Para oferecer suporte a cenários onde vários usuários do computador precisam se conectar a uma única instância do LocalDB, o LocalDB oferece suporte ao compartilhamento de instâncias. O proprietário de uma instância pode optar por permitir que outros usuários do computador se conectem à sua instância. As instâncias automáticas e nomeadas do LocalDB podem ser compartilhadas. Para compartilhar uma instância do LocalDB, o usuário escolhe um nome compartilhado (alias) para isso. Como o nome compartilhado fica visível para todos os usuários do computador, ele deve ser exclusivo no computador. O nome compartilhado de uma instância do LocalDB tem o mesmo formato da instância nomeada do LocalDB.

Somente um administrador no computador pode criar uma instância compartilhada do LocalDB. Uma instância compartilhada do LocalDB pode ser descompartilhada por um administrador ou pelo proprietário da instância compartilhada do LocalDB. Para compartilhar e descompartilhar uma instância do LocalDB, use os métodos LocalDBShareInstance e LocalDBUnShareInstance da API do LocalDB ou as opções de compartilhamento e descompartilhamento do utilitário SqlLocalDB.

Iniciar o LocalDB e conectar-se ao LocalDB

Conectar-se à instância automática

A maneira mais fácil de usar o LocalDB é conectar-se à instância automática pertencente ao usuário atual usando a cadeia de conexão Server=(localdb)\MSSQLLocalDB;Integrated Security=true. Para se conectar a um banco de dados específico utilizando o nome do arquivo, conecte-se usando uma string de conexão semelhante a Server=(LocalDB)\MSSQLLocalDB;Integrated Security=true;AttachDbFileName=D:\Data\MyDB1.mdf.

Os padrões de nomenclatura e a string de conexão para o formato LocalDB foram alterados no SQL Server 2014 (12.x). Anteriormente, o nome da instância era um único caractere v seguido por LocalDB e o número da versão. A partir do SQL Server 2014 (12.x), esse formato de nome de instância não é mais compatível. Em vez disso, deve ser usada a string de conexão mencionada anteriormente.

Observação

A primeira vez que o usuário de um computador tenta conectar-se ao LocalDB, a instância automática deve ser criada e iniciada. O tempo adicional para a criação da instância pode causar falha durante a tentativa de conexão e exibir uma mensagem de tempo esgotado. Quando isso acontecer, espere alguns segundos para deixar o processo de criação terminar e conecte novamente.

Criar e conectar-se a uma instância nomeada

Além da instância automática, o LocalDB também suporta instâncias nomeadas. Use o programa SqlLocalDB.exe para criar, iniciar ou interromper uma instância nomeada do LocalDB. Para obter mais informações sobre o programa SqlLocalDB.exe, consulte Utilitário SqlLocalDB.

REM Create an instance of LocalDB
"C:\Program Files\Microsoft SQL Server\160\Tools\Binn\SqlLocalDB.exe" create LocalDBApp1
REM Start the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\160\Tools\Binn\SqlLocalDB.exe" start LocalDBApp1
REM Gather information about the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\160\Tools\Binn\SqlLocalDB.exe" info LocalDBApp1

A última linha do código de exemplo mostrado anteriormente retorna informações semelhantes às da tabela a seguir.

Categoria Valor
Nome LocalDBApp1
Versão <Current Version>
Nome compartilhado ""
Proprietário "<Your Windows User>"
Criar automaticamente No
Estado Running
Hora da última inicialização <Date and Time>
Nome do pipe da instância np:\\.\pipe\LOCALDB#F365A78E\tsql\query

Observação

Se a aplicação usar uma versão do .NET anterior à 4.0.2, será necessário se conectar diretamente ao pipe nomeado do LocalDB. O valor “nome do pipe da Instância” é o pipe nomeado que a instância do LocalDB está acessando. A parte do nome do pipe da instância após LOCALDB# mudará sempre que a instância do LocalDB for iniciada. Para conectar-se à instância do LocalDB usando o SQL Server Management Studio, digite o nome do pipe da instância na caixa Nome do servidor da caixa de diálogo Conectar-se a Mecanismo de Banco de Dados . Em seu programa personalizado, você pode estabelecer uma conexão com a instância do LocalDB usando uma cadeia de conexão semelhante a SqlConnection conn = new SqlConnection(@"Server=np:\\.\pipe\LOCALDB#F365A78E\tsql\query");

Para conectar-se a uma instância compartilhada do LocalDB

Para se conectar a uma instância compartilhada do LocalDB, adicione \.\ (barra invertida + ponto + barra invertida) à cadeia de conexão para fazer referência ao namespace reservado para instâncias compartilhadas. Por exemplo, para conectar-se a uma instância compartilhada do LocalDB denominada AppData, use uma cadeia de conexão como (localdb)\.\AppData parte da cadeia de conexão. Um usuário que se conecta a uma instância compartilhada do LocalDB que não pertence a ele deve ter uma Autenticação do Windows ou um logon de Autenticação do SQL Server.

Solucionar problemas

Para saber mais sobre como solucionar problemas do LocalDB, confira Solucionar problemas do LocalDB do SQL Server 2012 Express.

Permissões

Uma instância do SQL Server Express LocalDB é criada por um usuário para uso próprio. Qualquer usuário no computador pode criar um banco de dados usando uma instância do LocalDB, armazenando arquivos sob o seu perfil do usuário e executando o processo sob suas credenciais. Por padrão, o acesso à instância do LocalDB é limitado a seu proprietário. Os dados contidos no LocalDB são protegidos pelo sistema de acesso aos arquivos do banco de dados. Se os arquivos do banco de dados do usuário estiverem em um local compartilhado, o banco de dados poderá ser aberto por qualquer pessoa com acesso ao sistema de arquivos desse local, utilizando para isso sua própria instância do LocalDB. Se os arquivos de banco de dados estiverem em um local protegido, como a pasta de dados de usuários, somente esse usuário e os administradores com acesso a essa pasta poderão abrir o banco de dados. Os arquivos do LocalDB só podem ser abertos por uma instância do LocalDB de cada vez.

Observação

O LocalDB sempre é executado sob o contexto de segurança de usuários, ou seja, o LocalDB nunca é executado com credenciais do grupo de Administradores local. Isso significa que todos os arquivos de banco de dados usados por uma instância do LocalDB devem ser acessíveis com a conta do Windows do usuário proprietário, independentemente de pertencer ao grupo local de administradores.