使用 sqlcmd (最常用)
sqlcmd 是 SQL Server 官方提供的命令行实用工具,它允许您直接在命令提示符或 PowerShell 中连接到 SQL Server 并执行 T-SQL 语句,这是最核心、最强大的方法。

基本连接命令
打开 命令提示符 (CMD) 或 PowerShell,然后输入以下命令:
sqlcmd -S 服务器名 -U 用户名 -P 密码
参数说明:
-S(Server): 指定要连接的 SQL Server 实例。- 对于默认实例:
-S localhost或-S . - 对于命名实例:
-S localhost\SQLEXPRESS(您的实例名是 SQLEXPRESS) - 对于远程服务器:
-S 192.168.1.100
- 对于默认实例:
-U(User): 登录用户名。- 对于 Windows 身份验证:通常不需要
-U和-P。 - 对于 SQL Server 身份验证:使用您的 SQL 登录名,如
sa。
- 对于 Windows 身份验证:通常不需要
-P(Password): 对应的密码。- 安全提示:在命令行中直接输入密码可能会被记录在历史记录中,存在安全风险,建议使用
-E(信任连接) 或通过提示输入密码。
- 安全提示:在命令行中直接输入密码可能会被记录在历史记录中,存在安全风险,建议使用
连接示例
示例 1:使用 Windows 身份验证连接到本地默认实例 这是最推荐的方式,因为它更安全。
sqlcmd -S localhost # 或者 sqlcmd -S .
示例 2:使用 SQL Server 身份验证连接到本地命名实例 (SQLEXPRESS)

sqlcmd -S localhost\SQLEXPRESS -U sa -P YourStrong!Password123
示例 3:连接到远程服务器
sqlcmd -S 192.168.1.100 -U sa -P YourStrong!Password123
在 sqlcmd 中执行命令
成功连接后,您会看到 1> 提示符,现在您可以输入 T-SQL 语句了。
-- 查看所有数据库 SELECT name FROM sys.databases; GO -- 切换到 master 数据库 USE master; GO -- 查看当前数据库 SELECT DB_NAME(); GO -- 退出 sqlcmd QUIT
GO 的作用:
GO 是 sqlcmd 的一个命令分隔符,表示将之前的所有 T-SQL 语句作为一个批次发送给 SQL Server 执行。
使用 PowerShell (更现代的交互方式)
如果您是 PowerShell 用户,可以使用 Invoke-Sqlcmd cmdlet,它提供更丰富的脚本功能。

安装 SQL Server PowerShell 模块
如果尚未安装,请先在 PowerShell (以管理员身份运行) 中运行:
Install-Module -Name SqlServer -Scope CurrentUser -Force
连接和执行命令
连接方式与 sqlcmd 类似,但语法不同。
# 定义连接参数 $serverInstance = "localhost\SQLEXPRESS" $database = "master" $username = "sa" $password = "YourStrong!Password123" | ConvertTo-SecureString -asPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($username, $password) # 执行查询并显示结果 $query = "SELECT name FROM sys.databases;" Invoke-Sqlcmd -ServerInstance $serverInstance -Database $database -Credential $credential -Query $query | Format-Table
启动/停止 SQL Server 服务 (管理员权限)
有时候您需要从命令行管理 SQL Server 服务的运行状态(在部署脚本中),这需要管理员权限。
使用 net 命令 (通用,但已不推荐)
# 启动 SQL Server 服务 (默认实例) net start MSSQLSERVER # 启动 SQL Server 服务 (命名实例,如 SQLEXPRESS) net start MSSQL$SQLEXPRESS # 停止服务 net stop MSSQL$SQLEXPRESS
使用 sc 命令 (更强大,推荐)
# 启动服务 sc start MSSQL$SQLEXPRESS # 停止服务 sc stop MSSQL$SQLEXPRESS # 查询服务状态 sc query MSSQL$SQLEXPRESS
使用 PowerShell (最现代的方式)
# 启动服务 Start-Service -Name "MSSQL$SQLEXPRESS" # 停止服务 Stop-Service -Name "MSSQL$SQLEXPRESS" # 获取服务状态 Get-Service -Name "MSSQL$SQLEXPRESS"
使用 osql (旧版工具)
osql 是 sqlcmd 的前身,功能较少,且已在 SQL Server 2012 中弃用。除非您必须维护非常旧的脚本,否则请使用 sqlcmd。
osql -S localhost -U sa -P YourPassword
总结与快速参考
| 目的 | 工具 | 命令示例 | 备注 |
|---|---|---|---|
| 连接并交互执行SQL | sqlcmd |
sqlcmd -S localhost\SQLEXPRESS -U sa -P Pass@123 |
最常用、最核心的工具。 |
| 连接并交互执行SQL | PowerShell | Import-Module SqlServer; Invoke-Sqlcmd -ServerInstance . -Query "SELECT 1" |
适合PowerShell脚本自动化。 |
| 启动/停止服务 | sc / PowerShell |
sc start MSSQL$SQLEXPRESS 或 Start-Service "MSSQL$SQLEXPRESS" |
需要管理员权限。 |
| 执行单条SQL并退出 | sqlcmd |
sqlcmd -S . -Q "SELECT GETDATE()" |
-Q 表示执行后退出,适合脚本。 |
| 执行SQL脚本文件 | sqlcmd |
sqlcmd -S . -i C:\scripts\my_script.sql |
-i 指定输入脚本文件路径。 |
新手建议:
- 从
sqlcmd开始,这是最基础也是最重要的工具。 - 确保您知道您的 SQL Server 实例名称(是默认实例还是
SQLEXPRESS这样的命名实例)。 - 优先使用 Windows 身份验证 (
sqlcmd -S .),如果需要 SQL Server 身份验证,请确保用户名和密码正确。
