SQL Server 2014 Express LocalDB

Microsoft SQL Server 2014 Express LocalDB 是面向开发人员的 SQL Server Express 的执行模式。 LocalDB 安装会复制启动 SQL Server 数据库引擎所需的最小文件集。 安装后 LocalDB ,开发人员使用特殊连接字符串启动连接。 连接时,会自动创建和启动必要的 SQL Server 基础结构,使应用程序能够使用数据库,而无需执行复杂或耗时的配置任务。 开发人员工具可以为开发人员提供一个 SQL Server 数据库引擎,使开发人员能够编写和测试 Transact-SQL 代码,而无需管理 SQL Server 的完整服务器实例。 SQL Server ExpressLocalDB 的实例使用 SqlLocalDB.exe 实用工具进行管理。 应使用 SQL Server ExpressLocalDB 代替已弃用的 SQL Server Express 用户实例功能。

安装 LocalDB

安装 LocalDB 的主要方法是使用 SqlLocalDB.msi 程序。 LocalDB 是安装 SQL Server 2014 Express 的任何 SKU 时的选项。 在安装 SQL Server Express 期间在功能选择页上选择LocalDB。 每个主 SQL Server 数据库引擎版本只能安装一个 LocalDB 二进制文件。 可以启动多个数据库引擎进程,并且都将使用相同的二进制文件。 SQL Server 数据库引擎作为 LocalDB 的实例启动,其限制与 SQL Server Express 相同。

DESCRIPTION

安装程序 LocalDB 使用 SqlLocalDB.msi 程序在计算机上安装必要的文件。 安装后, LocalDB 是 SQL Server Express 的实例,可以创建和打开 SQL Server 数据库。 数据库的系统数据库文件存储在用户本地 AppData 路径中,该路径通常隐藏。 例如 C:\Users\<user>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\LocalDBApp1\。 用户数据库文件存储在用户指定的位置,通常位于 C:\Users\<user>\Documents\ 文件夹中。

有关包括在LocalDB应用程序中的详细信息,请参阅 Visual Studio 文档本地数据概述演练:创建 SQL Server LocalDB 数据库演练:连接到 SQL Server LocalDB 数据库中的数据(Windows 窗体)。

有关 API 的详细信息 LocalDB ,请参阅 SQL Server Express LocalDB 实例 API 参考LocalDBStartInstance 函数

SqlLocalDb 实用工具可以创建新的实例 LocalDB、启动和停止实例 LocalDB,并包括有助于管理 LocalDB的选项。 有关 SqlLocalDb 实用工具的详细信息,请参阅 SqlLocalDB 实用工具

实例排序 LocalDB 规则设置为SQL_Latin1_General_CP1_CI_AS,无法更改。 通常支持数据库级、列级和表达式级排序规则。 包含式数据库遵循由包含数据库排序规则定义的元数据和 tempdb 排序规则。

限制

LocalDB 不能是合并复制订阅方。

LocalDB 不支持 FILESTREAM。

LocalDB 仅允许 Service Broker 的本地队列。

内置帐户(如 NT AUTHORITY\SYSTEM)拥有的 LocalDB 实例可能会因 Windows 文件系统重定向而出现可管理性问题;请改用普通 Windows 帐户作为所有者。

自动实例和命名实例

LocalDB 支持两种类型的实例:自动实例和命名实例。

  • 自动实例LocalDB是公开的。 它们会自动为用户创建和管理,可供任何应用程序使用。 用户计算机上安装的每个版本的LocalDB,都会有一个LocalDB自动实例。 自动实例 LocalDB 提供无缝的实例管理。 无需创建实例,系统也能正常工作。 这允许轻松安装应用程序并迁移到其他计算机。 如果目标计算机安装了指定的版本 LocalDB ,则目标计算机上的该版本的自动实例 LocalDB 也可用。 自动实例 LocalDB 的实例名称具有属于保留命名空间的特殊模式。 这可以防止与LocalDB相关的命名实例发生名称冲突。 自动实例的名称为 MSSQLLocalDB

  • 命名实例 LocalDB 是私有的。 它们由负责创建和管理实例的单个应用程序拥有。 命名实例提供与其他实例的隔离,并通过减少与其他数据库用户的资源争用来提高性能。 命名实例必须由用户通过 LocalDB 管理 API 显式创建,或者通过托管应用程序的 app.config 文件进行隐式创建(尽管托管应用程序也可根据需要使用 API)。 每个命名实例 LocalDB 都有一个关联 LocalDB 版本,该版本指向相应的二进制文件集 LocalDB 。 实例名称 LocalDBsysname 数据类型,最多可以包含 128 个字符。 (这不同于 SQL Server 的常规命名实例,它将名称限制为 16 个 ASCII 字符的常规 NetBIOS 名称。实例 LocalDB 的名称可以包含文件名内合法的任何 Unicode 字符。 使用自动实例名称的命名实例将成为自动实例。

计算机的不同用户可以具有具有相同名称的实例。 每个实例都是以其他用户身份运行的不同进程。

LocalDB 的共享实例

为了支持计算机的多个用户连接到一个 LocalDB 实例的场景,LocalDB 支持实例共享。 实例所有者可以选择允许计算机上的其他用户连接到其实例。 可以共享自动实例和命名实例 LocalDB 。 要分享一个LocalDB实例,用户需要为其选择一个共享名称(别名)。 由于共享名称对计算机的所有用户可见,因此此共享名称在计算机中必须是唯一的。 实例的 LocalDB 共享名称的格式与命名实例 LocalDB的格式相同。

只有计算机上的管理员才能创建共享实例 LocalDB。 共享实例 LocalDB 可由管理员或共享实例 LocalDB的所有者取消共享。 若要共享和取消共享实例LocalDB,请使用 LocalDBShareInstance API 的LocalDBLocalDBUnShareInstance方法,或 SqlLocalDb 实用工具的共享和取消共享选项。

启动 LocalDB 并连接到 LocalDB

连接到自动实例

最简单的使用方法是通过使用连接字符串“Server=(localdb)\MSSQLLocalDB;集成安全性=true”连接到当前用户拥有的自动实例。 若要使用文件名连接到特定数据库,请使用类似于“Server=(LocalDB)\MSSQLLocalDB”的连接字符串进行连接;集成安全性=true;AttachDbFileName=D:\Data\MyDB1.mdf”。

注释

首次在计算机上尝试连接到LocalDB的用户,必须同时创建和启动自动实例。 创建实例的额外时间可能会导致连接尝试失败并显示超时消息。 发生这种情况时,请等待几秒钟,让创建过程完成,然后再次连接。

创建具名实例并连接到这些实例

除了自动实例, LocalDB 还支持命名实例。 使用 SqlLocalDB.exe 程序创建、启动和停止一个命名为LocalDB的实例。 有关 SqlLocalDB.exe的详细信息,请参阅 SqlLocalDB 实用工具

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

上面的最后一行返回类似于以下内容的信息。

名称 “LocalDBApp1”
版本 <当前版本>
共享的名称 ""
所有者 “<你的 Windows 用户>”
自动创建
国家 跑步
上次开始时间 <日期和时间>
实例管道名称 np:\\.\pipe\LOCALDB#F365A78E\tsql\query

注释

如果您的应用程序使用的 .NET 版本早于 4.0.2,则必须直接连接到LocalDB命名管道。 实例管道名称值是正在侦听的实例的 LocalDB 命名管道。 LOCALDB# 后实例管道名称的部分将在每次启动实例 LocalDB 时更改。 若要使用 SQL Server Management Studio 连接到实例LocalDB,请在“连接到数据库引擎”对话框的服务器名称框中键入实例管道名称。 通过自定义程序,可以使用类似于 SqlConnection conn = new SqlConnection(@"Server=np:\\.\pipe\LOCALDB#F365A78E\tsql\query"); 的连接字符串与 LocalDB 的实例建立连接。

连接到共享的 LocalDB 实例

若要连接到共享实例,请在连接字符串中添加 .\(点加反斜杠),以引用为共享实例保留的命名空间。 例如,若要连接到命名AppDataLocalDB共享实例,请使用连接字符串,例如(localdb)\.\AppData连接字符串的一部分。 连接到其不拥有的 LocalDB 共享实例的用户必须具有 Windows 身份验证或 SQL Server 身份验证登录名。

故障排除

有关故障排除 LocalDB的信息,请参阅 SQL Server 2012 Express LocalDB 故障排除

权限

用户为自己的使用而创建的实例是 SQL Server 2014 ExpressLocalDB 实例。 计算机上的任何用户都可以使用实例 LocalDB创建数据库,将文件存储在其用户配置文件下,并在凭据下运行进程。 默认情况下,对实例 LocalDB 的访问仅限于其所有者。 中包含的 LocalDB 数据受文件系统对数据库文件的访问保护。 如果用户数据库文件存储在共享位置,则具有文件系统访问权限的任何人都可以使用自己拥有的实例 LocalDB 来打开该位置。 如果数据库文件位于受保护的位置(例如用户数据文件夹、只有该用户以及有权访问该文件夹的任何管理员)可以打开数据库。 LocalDB文件一次只能被一个LocalDB实例打开。

注释

LocalDB 始终在用户安全上下文下运行;也就是说, LocalDB 从不使用本地管理员组中的凭据运行。 这意味着,LocalDB 实例使用的所有数据库文件必须能通过拥有用户的 Windows 帐户访问,而无需考虑是否属于本地 Administrators 组。

另请参阅

SqlLocalDB 实用工具