![通过磁盘备份 MSSQL 数据库(无 SSMS 无命令行)](https://linux22.com/image/786288/%E9%80%9A%E8%BF%87%E7%A3%81%E7%9B%98%E5%A4%87%E4%BB%BD%20MSSQL%20%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%88%E6%97%A0%20SSMS%20%E6%97%A0%E5%91%BD%E4%BB%A4%E8%A1%8C%EF%BC%89.png)
我们的 Windows 服务器出现问题,但在运行磁盘修复之前,我想进行备份。目前我正在使用系统救援(Linux 实用程序)并且我已成功保存文件。
我唯一的问题是我需要备份 MSSQL 数据库。现在出于显而易见的原因,我无法使用 SSMS 软件或命令行来获取它,因为 MSSQL 没有运行,而且由于我在 Linux 上只是浏览硬盘,所以无法启动它。
我有什么选择?我原本想保存所有数据库文件(表、索引等),但是:
- 我不知道 MSSQL 将它们存储在哪里
- 我怀疑我无法用这些文件做任何事情。我的意思是,我可能无法神奇地将它们导入到新服务器上
答案1
默认情况下,MSSQL 将数据库文件存储在以下位置:
C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\DATA\
取决于XX
Microsoft SQL 版本。不过,过去可能已经更改!
您应该能够复制数据库文件并将其附加到具有相同版本或更高版本的另一个 Microsoft SQL 实例。
每个数据库很可能有以下文件:
- <数据库名称>.mdb:主数据文件
- <数据库名称>.ldf: 日志档案
- <数据库名称>.ndf:辅助数据文件(不一定每个数据库都有辅助数据文件)
确保你康复全部这些文件。
恢复后,您可以使用以下查询(或通过 SSMS GUI)将数据库附加到另一台 Microsoft SQL 服务器上
USE [master]
GO
create database <DatabaseName> ON
(name='LogicalName of the Data file', FileName='Data File Name'),
(name='LogicalName of the Log file', FileName='Log File Name')
FOR ATTACH;