将 SQL Server 数据库从 Windows 移动到 Linux 失败

Har*_*ari 5 sql-server windows linux ssms

我们正在尝试将 SQL 服务器数据库从 Windows 移动到 Linux。但是我们在迁移时面临的问题很少。

  1. 我们从 Windows 中的 SSMS 备份了数据库服务器
  2. 我们在 linux 中运行以下命令恢复它:
RESTORE FILELISTONLY FROM  DISK =N'/var/opt/mssql/data/backup_file_name.bak' 
RESTORE DATABASE DB_NAME 
    FROM  DISK = N'/var/opt/mssql/backup_file_name.bak' WITH  FILE = 1,   
    MOVE N'DB_NAME' TO N'/var/opt/mssql/data/DB_NAME.mdf',   
    MOVE N'DB_NAME_Log' TO N'/var/opt/mssql/data/DB_NAME.ldf', 
    NOUNLOAD,  REPLACE,  STATS = 1
GO
Run Code Online (Sandbox Code Playgroud)

运行这个我或多或少地得到一个错误在于:

文件 XX_FlatFline 无法恢复到PATH_IN_WINDOWS {.....mdf}。使用 WITH MOVE 标识文件的有效位置。

MDF 和 LDF 文件都出现错误。上面错误中显示的windows路径是mdf和ldf文件在windows机器中的位置。

有人可以帮助我了解这里出了什么问题吗?当我将转储恢复到新数据库时,为什么 Windows 路径仍然重要?

警告:我是 SQL Server 的新手。

Sin*_*our 0

在Linux上的SQL Server的第一个版本中,我看到SQL Server将路径转换为Windows中的相关术语,例如根'/'将是C:。因此,如果存在这种逻辑,您可以尝试使其类似于:

FROM DISK = N'C:\var\opt\mssql\backup_file_name.bak'WITH FILE = 1

但我认为现在情​​况有所不同,正如这里提到的 ,也许您应该首先检查 Linux 上的 SQL Server 版本,然后检查该文章中的步骤。