是否可以将旧版本的MS-SQL数据库还原到SQL Server 2017而无需更新?

时间:2019-02-14 11:26:32

标签: sql-server tsql restore

我已使用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版的升级步骤。

仅在数据库仍然可用的情况下,才希望没有升级步骤。

4 个答案:

答案 0 :(得分:0)

Microsoft documentation状态:

  

如果将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的每个版本都有其datalog files结构,这在服务器版本之间有所不同。而且,如果您将来自较低版本db文件的restoreattach数据库进行了单向更新,以具有当前SQL Server版本所需的结构。

不可能升级,因为当前版本的服务器需要该数据库文件的新结构。

围绕compatibility level / read_only property进行的所有猜测都将完全无济于事,当前服务器将永远不会运行不具有所需结构的文件。

对于readonly数据库,其文件将被升级,但数据库将保留readonly

Compatibility leveldatabase version(数据库文件的版本)完全无关。它只是告诉服务器应该使用哪个版本的query optimizer,仍然可以解析哪个旧的syntax,等等。