我已使用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版的升级步骤。
仅在数据库仍然可用的情况下,才希望没有升级步骤。
答案 0 :(得分:0)
如果将SQL Server 2005(9.x)或更高版本的数据库还原到SQL Server 2017,则会自动升级数据库。
尽管我会在迫切需要创建只读数据库并将其还原的情况下进行尝试。
但这是供应商不直接支持的黑魔法。
答案 1 :(得分:0)
否,这是不可能的。将数据库附加到较新版本的SQL Server后,就无法将其移回较旧的版本。在这种情况下,唯一的选择是导出/导入数据。如果需要修改数据库并将其移回旧服务器,则需要安装具有相同旧版本的服务器并在那里进行还原!
答案 2 :(得分:0)
兼容性级别很重要。 即使需要更改数据库的兼容性级别,在某些情况下也无法简单地还原备份。
还原在SQL Server 2008上创建的数据库备份 R2到SQL Server 2012实例运行顺利,但是如果使用SQL Server 尝试在SQL Server 2012上还原2000备份,但无法 直接做。
答案 3 :(得分:0)
运行上述命令后,我得到:运行升级步骤的数据库“ Polly” 从782版本到801版本。...数据库'Polly'运行 从868版升级到869版。
仅在数据库仍然可用的情况下,才希望没有升级步骤。
这是不可能的。 SQL Server
的每个版本都有其data
和log files
结构,这在服务器版本之间有所不同。而且,如果您将来自较低版本db文件的restore
或attach
数据库进行了单向更新,以具有当前SQL Server
版本所需的结构。
不可能升级,因为当前版本的服务器需要该数据库文件的新结构。
围绕compatibility level
/ read_only property
进行的所有猜测都将完全无济于事,当前服务器将永远不会运行不具有所需结构的文件。
对于readonly
数据库,其文件将被升级,但数据库将保留readonly
。
Compatibility level
与database version
(数据库文件的版本)完全无关。它只是告诉服务器应该使用哪个版本的query optimizer
,仍然可以解析哪个旧的syntax
,等等。