在传统的基于服务的 SQL Server 世界中,安装在单个计算机上的单个 SQL Server 实例在物理上是分开的:也就是说,必须单独安装和删除每个实例,并具有一组单独的二进制文件,并在单独的服务进程中运行。 SQL Server 实例名称用于指定用户要连接到的 SQL Server 实例。
SQL Server Express LocalDB 实例 API 使用简化的“精简”实例模型。 尽管单个 LocalDB 实例在磁盘和注册表中分离,但它们使用相同的共享 LocalDB 二进制文件集。 此外,LocalDB 不使用服务;LocalDB 实例通过 LocalDB 实例 API 调用按需启动。 在 LocalDB 中,实例名称用于指定用户要使用的 LocalDB 实例中的哪一个。
LocalDB 实例始终由单个用户拥有,只能从此用户的上下文中查看和访问,除非启用了实例共享。
尽管从技术上说,LocalDB 实例与传统的 SQL Server 实例不同,但其预期用途类似。 它们被称为 实例 来强调这种相似性,并使它们对 SQL Server 用户更加直观。
LocalDB 支持两种类型的实例:自动实例(AI)和命名实例(NI)。 LocalDB 实例的标识符是实例名称。
自动 LocalDB 实例
自动 LocalDB 实例为“public”;它们会自动为用户创建和管理,可供任何应用程序使用。 用户计算机上安装的每个 LocalDB 版本都存在一个自动 LocalDB 实例。
自动 LocalDB 实例提供无缝实例管理。 用户不需要创建实例。 这使用户能够轻松安装应用程序并迁移到不同的计算机。 如果目标计算机安装了指定的 LocalDB 版本,该版本的自动 LocalDB 实例也在该计算机上可用。
自动实例管理
用户不需要创建自动 LocalDB 实例。 首次使用实例时,会延迟创建该实例,前提是用户的计算机上提供了指定的 LocalDB 版本。 从用户的角度来看,如果 LocalDB 二进制文件存在,则自动实例始终存在。
其他实例管理作(如 Delete、Share 和 Unshare)也适用于自动实例。 具体而言,删除自动实例会有效地重置实例,该实例将在下一个“开始”作上重新创建。 如果系统数据库损坏,可能需要删除自动实例。
自动实例命名规则
自动 LocalDB 实例具有属于保留命名空间的实例名称的特殊模式。 这是防止与命名 LocalDB 实例发生名称冲突所必需的。
自动实例名称是 LocalDB 基线版本版本号,前面有一个“v”字符。 这看起来像“v”加上两个数字,它们之间有一个句点:例如,v11.0 或 V12.00。
非法自动实例名称的示例包括:
11.0 (开头缺少“v”字符)
v11 (缺少句点和版本的第二个数字)
v11。 (缺少版本的第二个数字)
v11.0.1.2(版本号包含两个以上的部分)
命名的 LocalDB 实例
命名的 LocalDB 实例为“private”;实例由负责创建和管理实例的单个应用程序拥有。 命名的 LocalDB 实例提供隔离并提高性能。
命名实例创建
用户必须通过 LocalDB 管理 API 显式创建命名实例,或者通过托管应用程序的 app.config 文件隐式创建命名实例。 托管应用程序也可以使用 API。
每个命名实例都有关联的 LocalDB 版本;也就是说,它指向一组指定的 LocalDB 二进制文件。 命名实例的版本是在实例创建过程中设置的。
命名实例命名规则
LocalDB 实例名称最多可以包含 128 个字符(数据类型施加 sysname 限制)。 与传统的 SQL Server 实例名称相比,这是一个显著差异,这些名称限制为 16 个 ASCII 字符的 NetBIOS 名称。 这种差异的原因是 LocalDB 将数据库视为文件,因此意味着基于文件的语义,因此用户可以直观地选择实例名称。
LocalDB 实例名称可以包含文件名组件内合法的任何 Unicode 字符。 文件名组件中的非法字符通常包括以下字符:ASCII/Unicode 字符 1 到 31,以及引号 ()、小于 ()、大于 (<>)、管道 (|)、backspace (\b)、tab (\t)、冒号 (:)、星号 {、问号 (?)、反斜杠 (\) 和正斜杠 (/)。 请注意,允许 null 字符 (\0), 因为它用于字符串终止;将忽略第一个 null 字符之后的所有内容。
注释
非法字符列表可能取决于作系统,并且可能会在将来的版本中更改。
实例名称中的前导空格和尾随空格将被忽略,将被剪裁。
为了避免命名冲突,命名的 LocalDB 实例不能具有遵循自动实例命名模式的名称,如前面“自动实例命名规则”中所述。尝试创建名称遵循自动实例命名模式的命名实例实际上会创建默认实例。
SQL Server Express LocalDB 参考主题
SQL Server Express LocalDB 标头和版本信息
提供用于查找 LocalDB 实例 API 的头文件信息和注册表项。
命令行管理工具:SqlLocalDB.exe
介绍 SqlLocalDB.exe,该工具用于从命令行管理 LocalDB 实例。
LocalDBCreateInstance 函数
描述用于创建新的 LocalDB 实例的函数。
LocalDBDeleteInstance 函数
描述用于删除 LocalDB 实例的函数。
LocalDBFormatMessage 函数
描述返回 LocalDB 错误的本地化说明的函数。
LocalDBGetInstanceInfo 函数
描述用于获取 LocalDB 实例的信息的函数,例如是否存在、版本信息、是否正在运行等。
LocalDBGetInstances 函数
描述用于返回具有指定版本的所有 LocalDB 实例的函数。
LocalDBGetVersionInfo 函数
描述用于返回指定 LocalDB 版本的信息的函数。
LocalDBGetVersions 函数
描述用于返回计算机上可用的所有 LocalDB 版本的函数。
LocalDBShareInstance 函数
描述用于共享指定 LocalDB 实例的函数。
LocalDBStartInstance 函数
描述启动指定 LocalDB 实例的函数。
LocalDBStartTracing 函数
描述为用户启用 API 跟踪的函数。
LocalDBStopInstance 函数
描述用于停止指定 LocalDB 实例运行的函数。
LocalDBStopTracing 函数
描述为用户禁用 API 跟踪的函数。
LocalDBUnshareInstance 函数
描述停止共享指定 LocalDB 实例的函数。