- 存储过程和函数的参数:这是最常见、最直接的“参数”,用于向数据库对象传递数据。
- SQL Server 服务启动参数:这是用于配置 SQL Server 服务如何启动和运行的底层参数,通常由 DBA 管理。
下面我将详细解释这两个层面的参数。

(图片来源网络,侵删)
存储过程和函数的参数
这是开发人员最常接触的参数,它们使得存储过程和函数更加灵活和可重用,因为可以在每次调用时传入不同的值。
参数类型
SQL Server 2008 支持三种类型的参数:
| 参数类型 | 关键字 | 描述 | 示例 |
|---|---|---|---|
| 输入参数 | IN (默认) |
将数据从调用者传递给存储过程或函数,这是最常用的类型。 | @EmployeeID INT |
| 输出参数 | OUTPUT |
将数据从存储过程或函数内部计算或处理的结果返回给调用者。 | @TotalSales INT OUTPUT |
| 可输入/输出参数 | INOUT (SQL Server 中不直接使用此关键字,但功能上等同于 OUTPUT 参数可以同时作为输入) |
参数既可以传入值,也可以传出值,在 SQL Server 中,你只需要声明为 OUTPUT,然后在调用时传入值即可实现此功能。 |
@NewValue INT OUTPUT (调用时传入一个值,过程修改后传出) |
注意:在 SQL Server 中,
IN是默认行为,可以省略不写。@param INT和@param INT IN是等价的。
语法示例
示例 1:简单的输入参数

(图片来源网络,侵删)
创建一个存储过程,根据员工ID查询员工姓名。
-- 创建存储过程
CREATE PROCEDURE sp_GetEmployeeName
-- 定义输入参数
@EmployeeID INT
AS
BEGIN
-- 使用参数查询
SELECT FirstName, LastName
FROM Employees
WHERE EmployeeID = @EmployeeID;
END
GO
-- 调用存储过程,传入参数值
EXEC sp_GetEmployeeName @EmployeeID = 101;
-- 或者使用简写
EXEC sp_GetEmployeeName 101;
GO
示例 2:带输出参数的存储过程
创建一个存储过程,计算指定部门的员工总数,并通过输出参数返回结果。
-- 创建存储过程
CREATE PROCEDURE sp_GetEmployeeCountByDepartment
-- 定义输入参数
@DepartmentName NVARCHAR(50),
-- 定义输出参数
@EmployeeCount INT OUTPUT
AS
BEGIN
-- 计算数量并赋值给输出参数
SELECT @EmployeeCount = COUNT(*)
FROM Employees
WHERE Department = @DepartmentName;
END
GO
-- 调用带输出参数的存储过程
DECLARE @TotalCount INT; -- 声明一个变量来接收输出值
EXEC sp_GetEmployeeCountByDepartment
@DepartmentName = 'Sales', -- 传入输入参数
@EmployeeCount = @TotalCount OUTPUT; -- 指定变量来接收输出参数
-- 打印结果
PRINT 'The number of employees in Sales is: ' + CAST(@TotalCount AS VARCHAR(10));
GO
示例 3:带默认值的参数

(图片来源网络,侵删)
可以为参数设置默认值,如果调用时不提供该参数,则使用默认值。
CREATE PROCEDURE sp_GetEmployeesByStatus
@Status NVARCHAR(20) = 'Active' -- 默认值为 'Active'
AS
BEGIN
SELECT *
FROM Employees
WHERE Status = @Status;
END
GO
-- 调用时,如果不传 @Status,则默认查询 'Active' 员工
EXEC sp_GetEmployeeByStatus;
-- 调用时,明确传入参数值
EXEC sp_GetEmployeeByStatus @Status = 'Inactive';
GO
SQL Server 服务启动参数
这些参数是当你启动 sqlservr.exe 进程时可以传递的选项,它们用于控制 SQL Server 服务的内存分配、启动模式、错误日志位置等高级配置,这些参数不是通过命令行直接输入,而是通过 配置管理器 或 服务 的“启动参数”来设置。
常用的启动参数
| 参数 | 描述 | 示例 |
|---|---|---|
| -d | 指定主数据文件的路径。 | -dC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf |
| -l | 指定事务日志文件的路径。 | -lC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf |
| -e | 指定错误日志文件的路径。 | -eC:\SQLLogs\ERRORLOG |
| -T | 启用一个 跟踪标志,这是一个非常强大的调试和性能调优工具,用于临时改变服务器的默认行为。 | -T3604 (将输出重定向到错误日志) -T1224 (锁定管理员账户) |
| -f | 以 最小配置模式 启动,当服务器因配置问题无法正常启动时非常有用,它会只加载必要的组件,忽略大部分配置设置。 | -f |
| -m | 以 单用户模式 启动,此时只允许一个连接(通常是管理员),用于修复数据库。 | -m |
| -c | 从指定的注册表项读取启动参数,而不是使用命令行参数。 | -c |
| -s | 指定要启动的 实例名,当你有多个 SQL Server 实例时使用。 | -sSQLEXPRESS |
如何查看和设置启动参数
-
通过 SQL Server 配置管理器:
- 打开 "SQL Server 配置管理器"。
- 展开 "SQL Server 服务"。
- 右键点击你要配置的 SQL Server 服务(如 "SQL Server (MSSQLSERVER)")。
- 选择 "属性"。
- 在 "高级" 选项卡下,你可以看到 "启动参数" 列表,可以在这里添加或修改
-d,-l,-e等参数。
-
通过 Windows 服务:
- 打开 "服务" (services.msc)。
- 找到你的 SQL Server 服务。
- 右键点击 -> "属性"。
- 在 "登录" 选项卡下,点击 "此账户",可以查看或修改服务账户。
- 在 "恢复" 选项卡下,可以配置失败后的操作。
- 在 "依存关系" 选项卡下,可以查看依赖项。
- 注意:直接在 "服务属性" 中编辑 "可执行文件的路径" 来添加启动参数 不推荐,因为很容易出错,最佳实践是使用配置管理器。
| 参数类型 | 作用对象 | 使用者 | 核心目的 |
|---|---|---|---|
| 存储过程/函数参数 | T-SQL 代码 (存储过程, 函数) | 开发人员 | 实现数据传递,使数据库对象灵活、可重用。 |
| 服务启动参数 | SQL Server 服务实例 | 数据库管理员 | 配置服务的底层行为,如文件路径、内存、启动模式、调试等。 |
理解这两个层面的参数对于 SQL Server 2008 的开发和管理都至关重要,开发人员需要精通前者来编写高效的业务逻辑,而 DBA 则需要熟悉后者来确保服务器的稳定运行和性能优化。
