使用 SQL Server 服务启动选项

安装 SQL Server 时,安装程序将把一组默认的启动选项写入 Microsoft Windows 注册表。可以使用这些启动选项指定备用的 master 数据库文件、master 数据库日志文件或错误日志文件。

可以使用 SQL Server 配置管理器设置启动选项。有关信息,请参阅如何配置服务器启动选项(SQL Server 配置管理器)

默认启动选项

说明

-dmaster_file_path

master 数据库文件的完全限定路径(通常为:C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\master.mdf)。如果没有提供此选项,则使用现有的注册表参数。

-eerror_log_path

错误日志文件的完全限定路径(通常为:C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG)。如果没有提供此选项,则使用现有的注册表参数。

-lmaster_log_path

master 数据库日志文件的完全限定路径(通常为:C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\mastlog.ldf)。如果没有指定此选项,则使用现有的注册表参数。

可以使用下列其他启动选项来临时覆盖默认启动选项并启动 SQL Server 实例。

其他启动选项

说明

-c

缩短从命令提示符启动 SQL Server 时的启动时间。通常,SQL Server 数据库引擎通过调用服务控制管理器作为服务启动。由于从命令提示符启动时,SQL Server 数据库引擎不作为服务启动,因此请使用 -c 跳过此步骤。

-f

以最小配置启动 SQL Server 实例。在配置值的设置(例如,过度分配内存)妨碍服务器启动时,这非常有用。在最低配置模式下启动 SQL Server 会将 SQL Server 置于单用户模式。有关详细信息,请参阅下面的 -m 说明。

-gmemory_to_reserve

指定 SQL Server 为在 SQL Server 进程之内但在 SQL Server 内存池之外分配内存而保留的内存整数量 (MB)。内存池以外的内存是指 SQL Server 用于加载诸如下列项目的区域:扩展过程 .dll 文件、分布式查询引用的 OLE DB 访问接口以及 Transact-SQL 语句中引用的自动化对象。文件大小的默认值为 256 MB。

使用此选项可帮助优化内存分配,但仅限于物理内存超过操作系统设置的应用程序可用虚拟内存配置限制时。如果 SQL Server 的内存使用要求异乎寻常,并且 SQL Server 进程的虚拟地址空间都在使用,则对于这样的大内存配置适合使用此选项。对此选项的不当使用会导致 SQL Server 实例无法启动或遇到运行时错误。

除非在 SQL Server 错误日志中看到下列任何警告,否则应使用 -g 参数的默认值:

  • "Failed Virtual Allocate Bytes: FAIL_VIRTUAL_RESERVE <size>"

  • "Failed Virtual Allocate Bytes: FAIL_VIRTUAL_COMMIT <size>"

这些消息可能指示 SQL Server 尝试释放部分 SQL Server 内存池空间,以便为扩展存储过程 .dll 文件或自动化对象等项目留出空间。在这种情况下,可以考虑增加由 -g 开关保留的内存量。

使用小于默认值的值将增加缓冲池和线程栈中的可用内存量;而在不使用很多扩展存储过程、分布式查询或自动化对象的系统中,这种方法可改善需要大量内存的工作负荷的性能。

-h

对 32 位 SQL Server 启用 AWE 时为热添加内存元数据保留虚拟地址空间。32 位 AWE 需要热添加内存,但这将占用大约 500 MB 的虚拟地址空间并且使内存优化更加困难。对于 64 位 SQL Server,不是必需项。热添加内存仅适用于 Windows Server 2003 Enterprise Edition 和 Datacenter Edition。它还需要从硬件供应商处获得特殊的硬件支持。

-m

在单用户模式下启动 SQL Server 实例。在单用户模式下启动 SQL Server 实例时,只能连接一个用户,并且不启动 CHECKPOINT 进程。CHECKPOINT 保证将已完成的事务定期从磁盘缓存写入数据库设备。(通常,在遇到需要修复的系统数据库问题时使用此选项。)启用 sp_configure allow updates 选项。默认情况下,将禁用 allow updates。在单用户模式下启动 SQL Server 可使计算机本地 Administrators 组的任何成员作为 sysadmin 固定服务器角色的成员连接到 SQL Server 实例。有关详细信息,请参阅故障排除:在系统管理员被锁定时如何连接到 SQL Server。有关单用户模式的详细信息,请参阅在单用户模式下启动 SQL Server

-m"Client Application Name"

当您将 -m 选项与 SQLCMD 或 SQL Server Management Studio 一起使用时,可以将连接限制为指定的客户端应用程序。例如,-m"SQLCMD" 将连接限制为单个连接并且该连接必须将自身标识为 SQLCMD 客户端程序。当您正在单用户模式下启动 SQL Server 并且未知的客户端应用程序正在占用这个唯一的可用连接时,使用此选项。若要通过 Management Studio 中的查询编辑器进行连接,请使用 -m"Microsoft SQL Server Management Studio - Query"

客户端应用程序名称区分大小写。

重要说明重要提示
不要将此选项作为安全功能使用。客户端应用程序提供客户端应用程序名称,并且提供假名称来作为连接字符串的一部分。

-n

不要使用 Windows 应用程序日志来记录 SQL Server 事件。如果使用 -n 启动 SQL Server 实例,则建议您同时使用 -e 启动选项。否则,将不会记录 SQL Server 事件。

-s

用于启动 SQL Server 的命名实例。如果 -s 参数未设置,则将尝试启动默认实例。必须在命令提示符下切换到实例相应的 BINN 目录,然后才能启动 sqlservr.exe。例如,如果 Instance1 为其二进制文件使用 \mssql$Instance1,则用户必须位于 \mssql$Instance1\binn 目录中才能启动 sqlservr.exe -s instance1

-Ttrace#

指示 SQL Server 实例启动时,指定的跟踪标志 (trace#) 应同时生效。跟踪标志用于以非标准行为启动服务器。有关详细信息,请参阅跟踪标志 (Transact-SQL)

-x

禁用下列监视功能:

  • SQL Server 性能监视器计数器

  • 保留 CPU 时间和高速缓存命中率统计信息

  • 收集 DBCC SQLPERF 命令的信息

  • 收集某些动态管理视图的信息

  • 许多扩展事件事件点

注意事项注意
当使用 –x 启动选项时,可供您用于诊断 SQL Server 的性能和功能问题的信息将显著减少。

-E

增加为文件组中的每个文件分配的区数。对于那些运行索引或数据扫描的用户数量受到限制的数据仓库应用程序,此选项可能十分有用。不应在其他应用程序中使用此选项,因为它可能降低性能。32 位版本的 SQL Server 不支持此选项。

注意注意

使用 -T 选项指定跟踪标记时,请使用大写“T”来传递跟踪标记号。SQL Server 也可接受小写“t”,只是它用于设置仅 SQL Server 支持工程师才需要的其他内部跟踪标志。(不读取“控制面板”启动窗口中指定的参数。)

使用启动选项进行故障排除

某些启动选项(如单用户模式选项和最低配置模式选项)主要在故障排除过程中使用。手动启动 sqlservr.exe 时,在命令行中使用 –m–f 选项启动用于故障排除的服务器将非常容易。

注意注意

使用 net start 启动 SQL Server 时,启动选项使用正斜杠 (/) 而不是连字符 (-)。

在正常操作中使用启动选项

最好在每次启动 SQL Server 时使用某些启动选项。通过使用 SQL Server Management Studio 或 SQL Server 配置管理器配置引导参数,可以非常容易地实现这些选项(如 –g 或用跟踪标志启动)。这些工具将启动选项保存为注册表项,因此 SQL Server 将始终用这些启动选项来启动。