SQL Server 2014 Express LocalDB
Microsoft SQL Server 2014 Express LocalDB
是面向程序开发人员的SQL Server Express执行模式。 LocalDB
安装会复制启动SQL Server数据库引擎所需的最少文件集。 安装后 LocalDB
,开发人员使用特殊连接字符串启动连接。 连接时,系统会自动创建并启动必要的SQL Server基础结构,使应用程序无需执行复杂或耗时的配置任务即可使用数据库。 开发人员工具可以向开发人员提供 SQL Server 数据库引擎 ,使其不必管理 SQL Server 的完整服务器实例即可撰写和测试 Transact-SQL 代码。 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
一个二进制文件。 可以启动多个 数据库引擎 进程,并且这些进程都将使用相同的二进制文件。 作为 启动LocalDB
的 SQL Server 数据库引擎实例具有与 SQL Server Express 相同的限制
说明
安装程序 LocalDB
使用 SqlLocalDB.msi 程序在计算机上安装必要的文件。 安装后,LocalDB
是可以创建和打开SQL Server数据库的SQL Server Express实例。 数据库的系统数据库文件存储于用户本地 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,无法更改。 一般支持数据库级、列级和表达式级排序规则。 包含的数据库遵循 Contained Database Collations 所定义的元数据和 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
。 的LocalDB
实例名称为sysname
数据类型,最多可以包含 128 个字符。 (这与 SQL Server 的常规命名实例不同,后者将名称限制为 16 个 ASCII chars 的常规 NetBIOS 名称。) 实例LocalDB
的名称可以包含文件名内合法的任何 Unicode 字符。 使用自动实例名称的命名实例将成为自动实例。
不同的计算机用户可具有同名的实例。 每个实例都是以不同的用户身份运行的不同的进程。
LocalDB 的共享实例
为了支持计算机的多个用户需要连接到 的单个实例 LocalDB
的方案, LocalDB
支持实例共享。 实例所有者可以选择允许计算机上的其他用户连接到其实例。 的自动实例和命名实例 LocalDB
都可以共享。 若要共享 LocalDB
的某个实例,用户需要为其选择一个共享名称(别名)。 因为该共享名称对于该计算机的所有用户都是可见的,则此共享名称在计算机上必须唯一。 实例 LocalDB
的共享名称的格式与 的 LocalDB
命名实例相同。
只有计算机上的管理员可以创建 的 LocalDB
共享实例。 的共享实例 LocalDB
可由 管理员或共享实例 LocalDB
的所有者取消共享。 若要共享和取消共享 的LocalDB
实例,请使用 LocalDBShareInstance
API 的 LocalDB
和 LocalDBUnShareInstance
方法,或 SqlLocalDb 实用工具的共享和非共享选项。
启动 LocalDB 和连接到 LocalDB
连接到自动实例
最简单的方法是 LocalDB
使用连接字符串 “Server= (localdb) \MSSQLLocalDB;Integrated Security=true”连接到当前用户拥有的自动实例。 若要使用文件名连接到特定数据库,则使用类似于 "Server=(LocalDB)\MSSQLLocalDB; Integrated Security=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 |
注意
如果应用程序使用 4.0.2 之前的 .NET 版本,则必须直接连接到 的 LocalDB
命名管道。 实例管道名称值是 实例正在侦听的 LocalDB
命名管道。 每次启动 的实例时,LOCALDB# 后面的实例 LocalDB
管道名称部分都会更改。 若要使用 SQL Server Management Studio 连接到 实例LocalDB
,请在“连接到数据库引擎”对话框的“服务器名称”框中键入实例管道名称。 在自定义程序中,可以使用类似于 的连接字符串与 实例 LocalDB
建立连接 SqlConnection conn = new SqlConnection(@"Server=np:\\.\pipe\LOCALDB#F365A78E\tsql\query");
连接到 LocalDB 的共享实例
若要连接到 的共享实例 LocalDB
,请将 .\ (dot + 反斜杠) 添加到连接字符串,以引用为共享实例保留的命名空间。 例如,若要连接到名为 AppData
的LocalDB
共享实例,请使用连接字符串,例如(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 帐户进行访问,而无需考虑本地管理员组中的成员身份。