在Ubuntu上恢复SQL Server数据的步骤
安装SQL Server及工具
确保Ubuntu系统已安装SQL Server(参考官方文档),并安装msodbcsql17客户端工具(用于sqlcmd连接):
sudo apt-get update
sudo apt-get install msodbcsql17
获取备份文件
将SQL Server备份文件(.bak,如完整备份、差异备份或事务日志备份)上传至Ubuntu服务器(如/var/opt/mssql/backup/目录),并确保当前用户对目录有读取权限。
通过sqlcmd工具登录到本地或远程SQL Server实例(默认端口1433):
sqlcmd -S localhost -U SA -P 'YourStrongPassword'
(注:SA为SQL Server管理员账户,需替换为实际用户名密码)
若备份文件为完整备份(.bak),且需覆盖现有数据库,使用以下命令:
RESTORE DATABASE [YourDatabaseName]
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_full.bak'
WITH REPLACE, RECOVERY;
REPLACE:强制覆盖现有同名数据库;RECOVERY:将数据库恢复至可用状态(若需应用后续事务日志,可先用NORECOVERY,最后再执行RECOVERY)。若存在差异备份或事务日志备份,需按顺序恢复:
-- 恢复差异备份(需在完整备份后执行)
RESTORE DATABASE [YourDatabaseName]
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_diff.bak'
WITH DIFFERENTIAL, RECOVERY;
-- 恢复事务日志(需在完整备份+差异备份后执行)
RESTORE LOG [YourDatabaseName]
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_log.bak'
WITH RECOVERY;
退出sqlcmd后,可通过以下命令检查数据库状态:
sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "SELECT name, state_desc FROM sys.databases WHERE name = 'YourDatabaseName';"
若state_desc显示为ONLINE,则表示恢复成功。
安装SSMS
在Ubuntu上通过apt或下载官方包安装SSMS(适用于Linux的轻量级版本)。
连接实例
打开SSMS,输入服务器地址(如localhost)、认证方式(SQL Server认证)及账户密码,连接到SQL Server。
执行恢复流程
.bak);若未备份数据,可尝试使用第三方工具(如SysTools SQL Recovery)恢复误删除或损坏的数据库文件(.mdf/.ldf):
.mdf);RESTORE VERIFYONLY命令验证);sysadmin角色);