繁体   English   中英

我如何知道我的 bacpac 用于哪个版本的 SQL 服务器? (我在 Ubuntu 上使用 SQL Server 2019 express)

[英]How do I know which version of SQL Server my bacpac is for? (I'm using SQL Server 2019 express on Ubuntu )

我得到了一个 SQL 服务器 bacpac 文件来恢复 Ubuntu 20.x 实例上的数据库。

我想我会使用这个命令来恢复文件:

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Password123!" -Q "RESTORE DATABASE [demodb] FROM DISK = N'/var/opt/mssql/backup/mssql-latest.bacpac' WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 5"

虽然它给我的错误是:

消息 3241,级别 16,State 1,服务器 6f604ce9f741,第 1 行设备“/var/opt/mssql/backup/mssql-latest.bacpac”上的媒体系列格式不正确。 SQL 服务器无法处理此媒体系列。 消息 3013,级别 16,State 1,服务器 6f604ce9f741,第 1 行 RESTORE DATABASE 异常终止。

当通过谷歌搜索进一步调查时,它似乎与旧版本的 SQL 服务器 bacpac 与新版本的 SQL 服务器一起使用。

我目前正在运行 SQL Server 2019 Express,认为这可行。

在不下载SQL Server的每个版本的情况下,如何找出我需要使用的版本? 同样,我如何知道我是否需要使用 Express 或 Developer,或 SQL 服务器的任何其他版本。 我认为 Express 是理想的,因为我认为它是轻量级的。

BACPAC 基本上是 ZIP 文件。 您可以将文件的扩展名更改为 zip 文件并解压缩。 您可以看到 SQL 服务器的版本。

编辑 bacpac 文件的参考文章

BACPAC 提取文件夹

您可以打开 BACPAC 的 SQL 服务器版本的 Origin.xml。

SQL Server 版本

另外,要回答您关于 SQL Server Express 与 SQL Server Developer 的问题。 SQL Server Express 是有限的功能集,SQL Server Developer 具有完整的功能集,如 SQL Server Enterprise edition。 但是,您只能将 SQL Server Developer 用于开发目的,而不能用于生产。 Express 版对存储和功能有一些限制。 如果不满意,您可以 go 为开发版和以后升级,当您 go 为生产。

SQL服务器的不同版本及区别

这里真正的问题是,您正在尝试使用“RESTORE DATABASE”命令恢复 .BACPAC 文件,这显然会失败,因为“RESTORE DATABASE”命令用于恢复.BAK 文件而不是.BACPAC 文件。

您必须使用 SQLPackage 实用程序来恢复 BACPAC 文件。 此处提供了详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM