sql-server - 如何导入 .bak 文件以在 vscode 上使用 mssql?
问题描述
我使用 Linux。但我在 sql、mssql 上工作。所以我只找到了一种在 linux 上使用 vscode 的 sql 扩展的 mssql 的方法。所以在这个扩展中我可以找到如何创建数据库或表等。但我找不到如何导入现有的数据库。我该如何处理?提前致谢。
解决方案
在 MS SQL 中恢复数据库在文档甚至 SO 中都有广泛的介绍:
- 如何:还原文件和文件组 (Transact-SQL)
- RESTORE 语句 (Transact-SQL) - SQL Server
- 将 .bak 文件导入 SQL Server 中的数据库
- 使用备份和还原将 SQL Server 数据库从 Windows 迁移到 Linux
如果您使用的是 vscode,那么您只是在寻找 SQL 语法/命令来完成任务,因此请忽略使用管理工作室和 UI 的解决方案。
许多 SQL 备份/恢复操作的复杂因素是,您在 SQL 命令中指定的用于执行操作的路径是相对于服务器的,而不是相对于您从中执行命令的工作站。
因此,第一步是将备份文件复制到数据库引擎具有文件系统级别访问权限的位置,然后在 SQL 脚本中使用该路径。
这是一个例子:
RESTORE DATABASE YourDB
FROM DISK = '/var/opt/mssql/backup/YourDB.bak'
WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf',
MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf'
但请通读文档以了解您需要的特定恢复顺序和参数。
如果不确定当前使用的文件路径,可以从数据库中查询它们:
SELECT
MDF.database_id,
MDF.name,
MDF.physical_name as data_file,
LDF.physical_name as log_file,
db_size_mb = CAST((MDF.size * 8.0)/1024 AS DECIMAL(8,2)),
log_size_mb = CAST((LDF.size * 8.0 / 1024) AS DECIMAL(8,2))
FROM (SELECT * FROM sys.master_files WHERE type_desc = 'ROWS' ) MDF
JOIN (SELECT * FROM sys.master_files WHERE type_desc = 'LOG' ) LDF ON MDF.database_id = LDF.database_id
database_id | 姓名 | 数据文件 | 日志文件 | db_size_mb | log_size_mb |
---|---|---|---|---|---|
1 | 掌握 | C:\Program Files\Microsoft SQL Server\MSSQL15.TEST\MSSQL\DATA\master.mdf | C:\Program Files\Microsoft SQL Server\MSSQL15.TEST\MSSQL\DATA\mastlog.ldf | 5.38 | 2.00 |
2 | 临时开发 | C:\Program Files\Microsoft SQL Server\MSSQL15.TEST\MSSQL\DATA\tempdb.mdf | C:\Program Files\Microsoft SQL Server\MSSQL15.TEST\MSSQL\DATA\templog.ldf | 8.00 | 8.00 |
3 | 模型开发 | C:\Program Files\Microsoft SQL Server\MSSQL15.TEST\MSSQL\DATA\model.mdf | C:\Program Files\Microsoft SQL Server\MSSQL15.TEST\MSSQL\DATA\modellog.ldf | 8.00 | 8.00 |
4 | MSDB数据 | C:\Program Files\Microsoft SQL Server\MSSQL15.TEST\MSSQL\DATA\MSDBData.mdf | C:\Program Files\Microsoft SQL Server\MSSQL15.TEST\MSSQL\DATA\MSDBLog.ldf | 19.69 | 28.81 |
5 | 我的应用 | D:\SQL Server\MyApp.mdf | L:\SQL Server\MyApp_log.ldf | 392.00 | 19912.00 |
推荐阅读
- spring - Kotlin 的箭
和交易 - node.js - 对 mongoDB 的 Nodejs GET 请求返回未定义
- xml - 艰巨的 NLP 任务并帮助我使用更少的撒克逊变量
- c - 如何在c中实现定点数的幂运算
- json - PostgreSQL - 在 JSON 对象中聚合值而不指定键
- php - 如果我通过 Axios 从客户端调用但从服务器端调用它,cookie 不会保存在浏览器中。我不知道是什么原因
- linq - Asp.net Core 5.0 Linq Take(1).ElementAt(index)
- c# - 如何在 WF 中获取 applicationcontext 类的处理程序?
- python - 合并具有动态名称的excel文件
- python - 在 PDFKIT python pdf 生成器工具中传递 Kerberos 凭据