SQL Server Express LocalDB

Se aplica a:SQL Server

Microsoft SQL Server Express LocalDB es una característica de SQL Server Express dirigida a los desarrolladores. Está disponible en SQL Server Express con Advanced Services.

La instalación de LocalDB copia un conjunto de archivos mínimo necesario para iniciar el Motor de base de datos de SQL Server. Una vez que LocalDB está instalado, puede iniciar una conexión mediante una cadena de conexión especial. Cuando se realiza la conexión, se crea y se inicia automáticamente la infraestructura de SQL Server necesaria, permitiendo que la aplicación use la base de datos sin tareas de configuración complejas. Las Herramientas de desarrollo pueden proporcionar a los desarrolladores de software un Motor de base de datos de SQL Server que les permite escribir y probar el código de Transact-SQL sin tener que administrar una instancia de servidor completa de SQL Server.

Medios de instalación

LocalDB es una característica que se selecciona durante la instalación de SQL Server Express y está disponible al descargar los medios. Si descarga los medios, elija Express Advanced o el paquete de LocalDB .

Los clientes de Visual Studio 2019 y 2022 deben instalar SQL Server Express 2019.

El instalador de LocalDB SqlLocalDB.msi está disponible en el soporte de instalación de todas las ediciones, excepto Express Core. Se encuentra en la carpeta <installation_media_root>\<LCID>_ENU_LP\x64\Setup\x64. LCID es un identificador de configuración regional o código de idioma. Por ejemplo, un valor LCID de 1033 hace referencia a la configuración regional en-US.

Como alternativa, puede instalar LocalDB a través del Instalador de Visual Studio, como parte de la carga de trabajo de almacenamiento y procesamiento de datos, la carga de trabajo de ASP.NET y desarrollo web o como un componente individual.

Instalar LocalDB

Instale LocalDB mediante el asistente para la instalación o el programa SqlLocalDB.msi. LocalDB es una opción al instalar LocalDB de SQL Server Express.

Seleccione LocalDB en la página Selección de características/Características compartidas durante la instalación. Solo puede haber una instalación de los archivos binarios de LocalDB para cada versión principal de Motor de base de datos de SQL Server. Se pueden iniciar varios procesos de Motor de base de datos y todos usan los mismos binarios. Una instancia de Motor de base de datos de SQL Server iniciada como LocalDB tiene las mismas limitaciones que SQL Server Express.

Una instancia de SQL Server Express LocalDB se administra con la utilidad SqlLocalDB.exe. Se debe usar SQL Server Express LocalDB en lugar de la característica de instancia de usuario de SQL Server Express, que ha quedado en desuso.

Descripción

El programa de instalación de LocalDB usa el programa SqlLocalDB.msi para instalar los archivos necesarios en el equipo. Una vez instalado, LocalDB es una instancia de SQL Server Express que puede crear y abrir bases de datos de SQL Server. Los archivos de base de datos del sistema de la base de datos se almacenan en la ruta de acceso de AppData local, que suele estar oculta. Por ejemplo, C:\Users\<user>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\LocalDBApp1\. Los archivos de la base de datos de usuarios se almacenan donde designa el usuario, normalmente en alguna parte de la carpeta C:\Users\<user>\Documents\.

Para más información sobre cómo incluir LocalDB en una aplicación, vea Visual Studio Introducción a los datos locales, Crear una base de datos y agregar las tablas en Visual Studio.

Para más información sobre la API LocalDB, consulte Referencia de SQL Server Express LocalDB.

La utilidad SqlLocalDB puede crear instancias de LocalDB, iniciar y detener una instancia de LocalDB, así como incluir opciones para permitirle administrar LocalDB. Para obtener más información acerca de la utilidad SqlLocalDB, vea Utilidad SqlLocalDB.

La intercalación de instancias de LocalDB está establecida en SQL_Latin1_General_CP1_CI_AS y no se puede cambiar. Normalmente se admiten las intercalaciones de nivel de base de datos, nivel de columna y nivel de expresión. Las bases de datos independientes siguen las reglas de metadatos e intercalaciones de tempdb definidas por Intercalaciones de bases de datos independientes.

Restricciones

  • LocalDB no se puede administrar de forma remota a través de SQL Server Management Studio.

  • LocalDB no puede ser un suscriptor de replicación de mezcla.

  • LocalDB no admite FILESTREAM.

  • LocalDB solo permite colas locales de Service Broker.

  • Una instancia de LocalDB propiedad de las cuentas integradas, como NT AUTHORITY\SYSTEM, puede presentar problemas de capacidad de administración debido a la redirección del sistema de archivos de Windows. Use en su lugar una cuenta de Windows normal como propietario.

Instancias automáticas y con nombre

LocalDB admite dos tipos de instancias: instancias automáticas e instancias con nombre.

  • Las instancias automáticas de LocalDB son públicas. Se crean y se administran automáticamente para el usuario y se pueden utilizar en cualquier aplicación. Hay una instancia automática de LocalDB en cada versión de LocalDB instalada en el equipo del usuario. Las instancias automáticas de LocalDB proporcionan una administración de instancias agilizada. No hay ninguna necesidad de crear la instancia; solo funciona. Esta característica permite la instalación y la migración fáciles de las aplicaciones en un equipo diferente. Si la máquina de destino tiene la versión especificada de LocalDB instalada, la instancia automática de LocalDB de esa versión también estará disponible en la máquina de destino. Las instancias automáticas de LocalDB cuentan con un patrón especial para el nombre de instancia que pertenece a un espacio de nombres reservado. Las instancias automáticas impiden conflictos de nombres con las instancias con nombre de LocalDB. El nombre de la instancia automática es MSSQLLocalDB.

  • Las instancias con nombre de LocalDB son privadas. Son propiedad de una sola aplicación que es la responsable de la creación y administración de la instancia. Las instancias con nombre proporcionan el aislamiento de otras instancias y pueden mejorar el rendimiento reduciendo la contención de recursos con otros usuarios de bases de datos. El usuario debe crear explícitamente las instancias con nombre mediante la API de administración de LocalDB o implícitamente a través del archivo app.config de una aplicación administrada (aunque la aplicación administrada también puede usar la API, si así lo quiere). Cada instancia con nombre de LocalDB tiene una versión de LocalDB asociada que señala al conjunto respectivo de binarios de LocalDB. El nombre de instancia de LocalDB es de tipo de datos sysname y puede tener hasta 128 caracteres. (Este nombre de instancia es diferente para las instancias con nombre normales de SQL Server, en que los nombres están limitados a nombres de NetBIOS normales de 15 caracteres ASCII). El nombre de una instancia de LocalDB puede contener cualquier tipo de caracteres Unicode que sean válidos en un nombre de archivo. Una instancia con nombre que utiliza un nombre de instancia automática se convierte en una instancia automática.

Usuarios diferentes de un equipo pueden tener instancias con el mismo nombre. Cada instancia se ejecuta como el usuario correspondiente en su propio proceso.

Instancias compartidas de LocalDB

Para admitir escenarios donde varios usuarios del equipo deben conectarse a una instancia de LocalDB, LocalDB admite el uso compartido de instancias. Un propietario de una instancia puede decidir permitir que otros usuarios del equipo se conecten a la instancia. Las instancias tanto automáticas como con nombre de LocalDB se pueden compartir. Para compartir una instancia de LocalDB, un usuario selecciona un nombre compartido (alias) para ella. Dado que el nombre compartido está visible para todos los usuarios del equipo, este nombre compartido debe ser único en el equipo. El nombre compartido de una instancia de LocalDB tiene el mismo formato que la instancia con nombre de LocalDB.

Solo un administrador del equipo puede crear una instancia compartida de LocalDB. Una instancia compartida de LocalDB puede dejar de ser compartida por un administrador o el propietario de la instancia compartida de LocalDB. Para compartir y dejar de compartir una instancia de LocalDB, use los métodos LocalDBShareInstance y LocalDBUnShareInstance de la API de LocalDB o las opciones para compartir y dejar de compartir de la utilidad SqlLocalDB.

Inicio de LocalDB y conexión a LocalDB

Conexión a la instancia automática

La manera más fácil de usar LocalDB es conectarse a la instancia automática propiedad del usuario actual mediante la cadena de conexión Server=(localdb)\MSSQLLocalDB;Integrated Security=true. Para conectarse a una base de datos específica usando el nombre de archivo, conéctese con una cadena de conexión similar a Server=(LocalDB)\MSSQLLocalDB;Integrated Security=true;AttachDbFileName=D:\Data\MyDB1.mdf.

La convención de nomenclatura y la cadena de conexión para el formato de LocalDB cambió en SQL Server 2014 (12.x). Anteriormente, el nombre de instancia era un solo carácter v seguido de LocalDB y el número de versión. A partir de SQL Server 2014 (12.x), este formato de nombre de instancia ya no se admite y se debe usar en su lugar la cadena de conexión mencionada anteriormente.

Nota:

La primera vez que un usuario de un equipo intenta conectarse a LocalDB, se debe crear e iniciar la instancia automática. El tiempo adicional para la creación de la instancia puede hacer que el intento de conexión deje de funcionar con un mensaje de fin de tiempo de espera. Cuando sucede esto, espere unos segundos para que el proceso de creación se complete y, a continuación, conéctese de nuevo.

Creación de una instancia con nombre y conexión a ella

Además de la instancia automática, LocalDB también admite instancias con nombre. Use el programa SqlLocalDB.exe para crear, iniciar y detener una instancia con nombre de LocalDB. Para obtener más información acerca de SqlLocalDB.exe, vea Utilidad 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

La última línea del ejemplo de código anterior devuelve información similar a la tabla siguiente.

Category Value
Nombre LocalDBApp1
Versión <Current Version>
Nombre compartido ""
Propietario "<Your Windows User>"
Creación automática No
Estado Running
Última hora de inicio <Date and Time>
Nombre de canalización de instancia np:\\.\pipe\LOCALDB#F365A78E\tsql\query

Nota:

Si la aplicación usa una versión de .NET anterior a 4.0.2, debe conectarse directamente a la canalización con nombre de LocalDB. El valor de nombre de canalización de la instancia es la canalización con nombre en la que escucha la instancia de LocalDB. La parte de nombre de canalización de la instancia que sigue a LOCALDB# cambiará cada vez que se inicie la instancia de LocalDB. Para conectarse a la instancia de LocalDB mediante SQL Server Management Studio, escriba el nombre de canalización de la instancia en el cuadro Nombre de servidor del cuadro de diálogo Conectar aMotor de base de datos . Desde su programa personalizado puede establecer la conexión a la instancia de LocalDB mediante una cadena de conexión similar a SqlConnection conn = new SqlConnection(@"Server=np:\\.\pipe\LOCALDB#F365A78E\tsql\query");.

Conexión a una instancia compartida de LocalDB

Para conectarse a una instancia compartida de LocalDB, agregue \.\ (barra diagonal inversa + punto + barra diagonal inversa) a la cadena de conexión para hacer referencia al espacio de nombres reservado para las instancias compartidas. Por ejemplo, para conectarse a una instancia compartida de LocalDB denominada AppData, use una cadena de conexión, como (localdb)\.\AppData, como parte de la cadena de conexión. Un usuario que se conecta a una instancia compartida de LocalDB de la que no es propietario debe tener un inicio de sesión con autenticación de Windows o autenticación de SQL Server.

Solución de problemas

Para información sobre cómo solucionar problemas de LocalDB, consulte la página que trata la solución de problemas de SQL Server 2012 Express LocalDB.

Permisos

Una instancia de SQL Server Express LocalDB es una instancia creada por el usuario para utilizarla. Cualquier usuario del equipo puede crear una base de datos mediante una instancia de LocalDB, almacenar archivos en su perfil de usuario y ejecutar el proceso con sus credenciales. De forma predeterminada, el acceso a la instancia de LocalDB está limitado a su propietario. Los datos contenidos en LocalDB están protegidos por el acceso del sistema de archivos a los archivos de base de datos. Si los archivos de base de datos de usuario se almacenan en una ubicación compartida, cualquiera que tenga acceso al sistema de archivos en esa ubicación puede abrir la base de datos usando una instancia de LocalDB que sea de su propiedad. Si los archivos de base de datos están en una ubicación protegida, como la carpeta de datos de los usuarios, solo el usuario y los administradores con acceso a la carpeta pueden abrir la base de datos. Los archivos de LocalDB solo se pueden abrir con una instancia de LocalDB cada vez.

Nota

LocalDB siempre se ejecuta en el contexto de seguridad de los usuarios; es decir, LocalDB nunca se ejecuta con credenciales del grupo local Administradores. Esto significa que todos los archivos de base de datos usados por una instancia de LocalDB deben ser accesibles mediante la cuenta de Windows del usuario propietario, sin tener en cuenta la pertenencia al grupo local Administradores.