我每天都使用 T-SQL 成功地将备份从早期版本恢复到 MS SQL 2017。
但是,在还原过程中,数据库会升级到当前版本。
这是一个问题,因为我希望修改数据库,然后进行备份,然后将其传输并恢复到另一个使用相同早期版本的 MS SQL 的系统。
是否可以在不升级数据库的情况下运行 RESTORE?
一直在查看 T-SQL 文档,但没有找到提到的。
我使用的 T-SQL 代码是:
USE master
GO
ALTER DATABASE Polly SET SINGLE_USER
with ROLLBACK IMMEDIATE
GO
RESTORE DATABASE Polly FROM DISK = 'C:\data\Polly.bak';
GO
USE Polly
DELETE FROM SytLog;
GO
ALTER DATABASE Polly SET MULTI_USER
GO
如果有人对上述内容有一般改进,我很乐意提供建议。
当上述运行时,我得到:
数据库“Polly”运行从版本 782 到版本 801 的升级步骤。
...
数据库“Polly”运行从版本 868 到版本 869 的升级步骤。
希望看到没有升级步骤,但前提是数据库仍然可用。
请您参考如下方法:
When the above runs I get: Database 'Polly' running the upgrade step from version 782 to version 801. ... Database 'Polly' running the upgrade step from version 868 to version 869.
Would like to see no upgrade steps, but only if database still usable.
这不可能。各版本
SQL Server
有它的
data
和
log files
服务器版本之间不同的结构。如果您
restore
或
attach
来自较低版本 db 文件的数据库被单向更新为具有当前版本
SQL Server
的结构。需要。
不升级是不可能的,因为当前版本的服务器需要 db 文件的新结构。
一切猜测
compatibility level
/
read_only property
根本没有帮助,当前服务器永远不会运行不属于它所需结构的文件。
如果是
readonly
数据库其文件将升级但数据库将保留
readonly
.
Compatibility level
与
database version
无关(db 文件的版本)。它只是告诉服务器是什么版本的
query optimizer
应该用什么,遗留什么
syntax
仍然可以解析等。