在 SQL 2019 上,我尝试将兼容性级别更改为 2008(以确保我能够附加到旧版本,至少我希望这是可能的)。
我分离了这个数据库。
到目前为止,我发现了以下几个相关主题: 将数据库还原到旧版本
但是有关于恢复备份的讨论,但我问的是分离/附加和兼容性级别。
所以这是我的问题:
问题 1:有没有办法在旧的 SQL 服务器上附加最新的 mdb 文件?
如果不
问题2:功能“兼容性级别”是什么?
在阅读了以下两个答案后,我有:
问题 3:您是否认为使用dbeaver或devart等工具可以在 NEW<>OLD SQL 版本之间导出/导入数据,或者您是否会建议其他工具来完成此类工作?
问题 1 - 否
您不能将数据库从较新版本的 SQL 恢复或附加到较旧版本。倒退的唯一方法是使用 bacpac 导出架构和数据,然后再次导入。
问题 2 - 兼容性级别
这主要控制是否在数据库上启用某些功能(例如 JSON),它还控制使用哪个基数引擎来估算计划及其各种成本。
问题 3 - 如何倒退
我没有使用你提到的工具,所以我不知道它们。但我以前使用 bacpac(包含在 SQL Server 中)来移动数据库。它适用于较小的数据库。
您还可以使用 SSIS 迁移数据,尽管与仅使用 bacpac 相比,这可能需要大量工作。
https://www.sqlshack.com/importing-a-bacpac-file-for-a-sql-database-using-ssms/
Q1 > 不幸的是不是 Q2 > 当您想要避免在进行服务器升级时更改查询语义和执行计划时,兼容性级别很有帮助
要将数据库从较新版本升级到较旧版本,您需要编写架构脚本(表、视图、SP 等) - 删除旧版本不支持的任何新功能并将数据编写脚本 - BCP 会有所帮助你在这里。