SQL Server :如何正确“还原” .sql 后缀文件
核心概念:执行脚本 vs. 还原备份
理解两者的区别是正确操作数据库的前提。
.sql 文件:SQL 脚本
这是一个包含一系列 Transact-SQL (T-SQL) 命令的纯文本文件。其内容可能包括 CREATE TABLE、INSERT INTO、UPDATE、CREATE PROCEDURE 等指令。处理 .sql 文件,实际上是在目标数据库上执行 (Execute) 文件内包含的SQL命令集合。
.bak 文件:数据库备份
这是一个由 SQL Server 生成的二进制备份文件,包含了数据库在特定时间点的完整快照,涵盖表结构、数据、索引、存储过程等所有数据库对象。处理 .bak 文件,执行的是真正的还原 (Restore) 操作,该操作会用备份内容创建一个新数据库或覆盖一个现有数据库。
简而言之,一个是运行代码指令,另一个是恢复数据快照。本文聚焦于 .sql 脚本文件的执行方法。
方法一:通过 SSMS 图形界面执行 .sql 脚本
这是最直观且用户友好的方法,适用于绝大多数日常开发与管理场景。
操作步骤:
连接到数据库实例
启动 SQL Server Management Studio (SSMS),在连接对话框中提供服务器名称及身份验证凭据,成功连接到目标 SQL Server 实例。打开 .sql 文件
在顶部菜单栏选择 文件 (File) > 打开 (Open) > 文件 (File)... (快捷键 Ctrl + O)。在文件浏览器中定位并选择目标 .sql 文件,然后点击“打开”。指定目标数据库 (关键步骤)
.sql 脚本内容将被加载到一个新的查询编辑器窗口。此时,必须在编辑器顶部的工具栏“可用数据库”下拉菜单中,选择脚本将要执行的正确数据库。这是一个关键且强制性的检查步骤,可避免在错误的数据库(如 master 系统数据库)上执行脚本而引发问题。<!-- 这是一个占位符图片链接,可以替换为实际截图 -->
执行脚本
确认目标数据库无误后,点击工具栏上的 执行 (Execute) 按钮 (绿色三角形图标),或按键盘上的 F5 键。监控与验证结果
脚本执行期间,可以在查询编辑器下方的 消息 (Messages) 窗格中查看每条命令的执行状态。执行完成后,结果 (Results) 窗格会显示查询返回的数据。任何错误信息也会在“消息”窗格中明确提示。
方法二:使用 sqlcmd 命令行工具
对于自动化任务、持续集成/持续部署 (CI/CD) 流程或处理因体积过大而无法在 SSMS 中流畅打开的 .sql 文件,sqlcmd 是一个更高效、更可靠的选择。
操作步骤:
启动命令行环境
打开命令提示符 (Command Prompt)、PowerShell 或任何其他终端。构建并运行 sqlcmd 命令
使用以下命令结构来调用 sqlcmd 并执行脚本:code Bash
downloadcontent_copy
expand_less
sqlcmd -S <ServerInstanceName> -U <User> -P <Password> -d <DatabaseName> -i "<FullPathToSqlFile>"核心参数解析:
-S: 指定要连接的 SQL Server 实例名称。本地默认实例可使用 .、(local) 或 localhost。
-U: 登录数据库的用户名 (例如 sa)。
-P: 对应的密码。
-d: 指定脚本将作用于哪个数据库。
-i: 指定输入 .sql 脚本文件的绝对路径。
命令范例:
使用 SQL Server 身份验证登录:
code Bash
downloadcontent_copy
expand_less
sqlcmd -S . -U sa -P YourStrongPassword123 -d MyWebAppDB -i "C:\SQL_Scripts\schema_and_data.sql"使用 Windows 集成身份验证登录 (推荐在域环境中使用,无需明文密码):
code Bash
downloadcontent_copy
expand_less
sqlcmd -S . -E -d MyWebAppDB -i "C:\SQL_Scripts\schema_and_data.sql"提示: -E 参数表示使用信任连接 (Windows Authentication),此时无需 -U 和 -P 参数。
总结与最佳实践
核心要点回顾
.sql 文件是通过 执行 (Execute) 来应用的,其本质是运行脚本。
在 SSMS 中操作时,务必在执行前检查并选定正确的目标数据库。
.bak 文件是真正的数据库备份,必须通过 还原 (Restore) 功能进行处理。
面对体积庞大的 .sql 文件,sqlcmd 是比 SSMS 更稳定、更高效的选择。
Comments