首页 > 解决方案 > 如何导入 .bak 文件以在 vscode 上使用 mssql?

问题描述

我使用 Linux。但我在 sql、mssql 上工作。所以我只找到了一种在 linux 上使用 vscode 的 sql 扩展的 mssql 的方法。所以在这个扩展中我可以找到如何创建数据库或表等。但我找不到如何导入现有的数据库。我该如何处理?提前致谢。

标签: sql-serverlinuxvisual-studio-code

解决方案


在 MS SQL 中恢复数据库在文档甚至 SO 中都有广泛的介绍:

如果您使用的是 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

推荐阅读